22

Spring Framework と Git を使用する Java プロジェクトがあり、ビルド番号を表示したいと考えていました。Build Number Maven pluginを見つけました。Git では、ビルド番号は Git ハッシュです。私はそれが嫌いで、デートはもっと表現力豊かだと思っていました。

SVN と Git の異なるプロファイルでビルド番号プラグインを使用する方法を説明しているこの優れたブログ記事を見つけました。私は Git を使用しているだけなので、新しいプロファイルを作成する代わりに、ビルド タグにプラグイン部分をコピーしただけです。

「mvn package」を実行すると、次のように表示されます。

[INFO] --- buildnumber-maven-plugin:1.0:create (default) @ sherd ---
[INFO] Storing buildNumber: 2011-08-04_21-48_stivlo at timestamp: 1312487296631

これは問題ないように見えますが、どこに保管されているのでしょうか。「git status」は新しいファイルを検出せず、target/ にもないようです (target/ は私の .gitignore にあります)。

ビルド番号をファイルに保存するように構成を変更する必要があるのでしょうか。ビルド番号の値はどのように使用できますか?


Michael-O のヒントのおかげで、Maven Getting Started Guide のリソース ファイルのフィルタリング方法に関する章を読みました。次の内容のファイル application.properties を src/main/resources/properties/application.properties に作成しました。

# application properties
application.name=${pom.name}
application.version=${pom.version}
application.build=${buildNumber}

ビルド セクション内に次の XML スニペットを追加しました。

<resources>
    <resource>
        <directory>src/main/resources/properties</directory>
        <filtering>true</filtering>
    </resource>
</resources>

コマンドラインから "mvn package" を呼び出すと、このプロパティ ファイルは、たとえば次の内容で target/classes/properties/application.properties に保存されます。

# application properties
application.name=Sherd Control Panel
application.version=1.0.1-SNAPSHOT
application.build=2011-08-05_05-55_stivlo

コマンドラインからはすべて正常に動作しますが、m2eclipse でビルド エラーが発生します。

05/08/11 6.05.03 CEST: Build errors for obliquid-cp; 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal
org.codehaus.mojo:buildnumber-maven-plugin:1.0:create (default) on project 
sherd: Cannot get the branch information from the scm repository : 
Exception while executing SCM command.

何らかの理由で m2eclipse が私のリポジトリに接続しようとしますが、SSH と秘密鍵でアクセスする Git リポジトリであるため接続できません。m2eclipse に Git に接続しないように指示することはできますか。


さらに掘り下げた後、revisionOnScmFailureオプションについて見つけ、それをtrueに設定すると、m2eclipseも機能するようになりました。参考までに、私が使用した buildnumber maven プラグインの完全な構成を次に示します (build / plugins セクションの pom.xml に含まれます)。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>buildnumber-maven-plugin</artifactId>
    <version>1.0</version>
    <executions>
        <execution>
            <phase>generate-resources</phase>
            <goals>
                <goal>create</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <doCheck>false</doCheck>
        <doUpdate>false</doUpdate>
         <revisionOnScmFailure>true</revisionOnScmFailure>
        <format>{0,date,yyyy-MM-dd_HH-mm}_{1}</format>
        <items>
            <item>timestamp</item>
            <item>${user.name}</item>
        </items>
    </configuration>
</plugin>
4

4 に答える 4

10

revisionOnScmFailureオプションをに設定しないでくださいtrue。ブール値は想定されていません。SCM が利用できない場合に使用するリビジョン文字列に設定しますna。ビルド番号の形式をオーバーライドするので、それは問題ではありませんが、より正確になります。

buildnumber-maven-plugin docsを参照してください。

于 2012-05-15T08:21:18.560 に答える
4

フィルタリングされたプロパティ ファイルに保存します。Maven を使用してバージョン番号をテキスト ファイルに出力するを参照してください。

于 2011-08-04T20:10:40.157 に答える
3

OPから報告された問題を再現できませんでした。私の場合、コマンド ラインと m2eclipse の両方が正常に動作し、ファイルはtarget/classesフォルダーに正しく生成されます。@KasunBG が提供する回答は正しくありません。buildNumber.properties は、次を使用する場合にのみ生成されます。

        <format>{0,number}</format>
        <items>
            <item>buildNumber</item>
        </items>

buildNumber.properties は、増分可能な数値を格納するために使用されます。このため (私が思うに)、timestamp/scmVersion などを使用すると、プラグインはこのファイルを生成しません。

于 2012-10-15T00:05:28.850 に答える
0

ドキュメントページには、フェーズの実行${basedir}/buildNumber.properties時に作成されるプロパティ ファイルが に保存されていると記載されています。buildnumber:create

于 2011-08-05T03:58:28.237 に答える