7

TeamCityからmavenビルドを実行し、build.vcs.numberを使用してSubversionリビジョンをマニフェストに書き込みます。VCSとしてSubversionを使用するMavenビルドでは、TeamCityは次のように追加します。

-Dbuild.vcs.number=1234

mavenコマンドラインへ。1234は構築中のブランチの最新リビジョンです。

次に、pom.xmlに次のようになります。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
            </manifest>
            <manifestEntries>
                <build>${build.vcs.number}</build>
            </manifestEntries>
        </archive>
    </configuration>
</plugin>

これは、Maven release:perform(これもTeamCityから)を実行するまではすべて正常に機能します。実行すると、TeamCityビルドログでこのプロパティがコマンドで渡されたことがわかりますが、${build.vcs.number}はnullになります。ライン。

maven-release-pluginのドキュメントは、Mavenが実行目標のある時点でフォークされたプロセスを実行することを示唆しています-これが問題がある理由ですか?

この特定のプロパティがそのフォークされたプロセスに確実に渡されるようにする方法はありますか?

4

1 に答える 1

5
-Darguments=-Dbuild.vcs.number=1234

クリーンで再現可能なコマンド ラインを確保するためにリリース用の分岐プロセスがあるため、何を通過するかを指定する必要があります。

理想的には、Pom でリリース プラグインを構成してプロパティを渡すようにしますが、オーバーライドの使用に失敗すると (誰かが Pom でオーバーライドを無効にしない限り... 再度有効にするまでスタックします。

注: 複数のプロパティまたはスペースを含むプロパティがある場合は、引用に細心の注意を払ってください。

于 2012-09-13T00:16:36.047 に答える