2

私は次のpom.xmlを持っています

<project>
  <properties>
    <buildNumber>dev</buildNumber>
  </properties>
  <build>
    <finalName>${project.artifactId}-${project.version}-${buildNumber}</finalName>
  </build>
</project>

これは開発マシンで正常に機能します。実行するmvn packageと、project-1.1-dev.warアーティファクトが発生します。私が走れば私mvn package -DbuildNumber=121は持っていpackage-1.1-121.warます。

project-1.1-dev.warしかし、プロパティがmavenに渡されたにもかかわらず、CIサーバー(TeamCity)は常に取得buildNumberしました(デフォルトのプロパティ定義をから削除するとpom.xml、mavenは正しいファイル名でアーティファクトをビルドします)。

システムプロパティの解決の優先順位は、どういうわけかプラットフォームに依存しているようです(Mavenバージョンは開発者のマシンとTCの両方で等しい-2.2.1)?

4

3 に答える 3

1

あなたの質問への答えは、SO: Maven プロパティのオーバーロードに関する別の質問にあります。

-DbuildNumber=121つまり、「6 プロパティと変数」ページでシステム プロパティ「buildNumber」を設定しても maven プロパティがオーバーライドされないため、maven コマンド ライン (「3 ビルド ステップ: maven」ページ)を渡す必要があります。

于 2011-08-23T18:45:40.833 に答える
1

<properties>それは少し奇妙です...おそらく、コマンドラインで指定されたパラメーターに、タグで定義されたパラメーターよりも高い優先度を強制することはできません。

アイデアは、プロパティを定義するプロファイルを使用することですbuildNumber:

<profiles>
    <profile>
        <id>dev-property</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <buildNumber>dev</buildNumber>
        </properties>
    </profile>
</profiles>

したがって、デフォルトでbuildNumberは、値と等しくなりdevます。次に、TeamCity コマンドラインで、コマンドを使用してこのプロファイルを無効にしますmvn ... -P !dev-property(!プロファイル ID の前にある は、プロファイルを無効にする必要があることを示します)。

于 2010-09-15T06:34:40.777 に答える
-1

SNAPSHOTバージョンの概念に精通していますか?あなたがやろうとしていることのように聞こえ、Mavenによって箱から出してサポートされています。major-minor-incrementalまたはmajor -minor- devを構築したいようですが、代わりにmajor-minor-incremental- SNAPSHOTを使用できる場合は、必要な処理を実行する必要があります。

于 2010-09-15T06:42:14.613 に答える