私はJavaプロジェクトを持っていて、ビルド番号を表示したいと思っていました。 Build Number Mavenプラグイン を見つけました。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入門ガイドでリソースファイルをフィルタリングする方法 に関する章を読みました。次の内容でsrc/main/resources/properties/application.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>
フィルタリングされたプロパティファイルに保存します。 を参照してくださいmavenを使用してバージョン番号をテキストファイルに出力します
revisionOnScmFailure
オプションをtrue
に設定しないでください。ブール値は想定されていません。 na
など、SCMが利用できないときに使用するリビジョン文字列に設定します。ビルド番号の形式をオーバーライドするので、ケースには関係ありませんが、より正確です。
buildnumber-maven-plugin docs を参照してください。
OPから報告された問題を再現できませんでした。私の場合、コマンドラインとm2Eclipseの両方が正常に動作し、ファイルはtarget/classesフォルダーに正しく生成されます。 @KasunBGが提供する答えは正しくありません。 buildNumber.propertiesは、以下を使用する場合にのみ生成されます。
<format>{0,number}</format>
<items>
<item>buildNumber</item>
</items>
buildNumber.propertiesは、増分できる数値を格納するために使用されます。このため(timestamp/scmVersionなどを使用した場合)、プラグインはこのファイルを生成しません。
documentation ページには、プロパティファイルが${basedir}/buildNumber.properties
、buildnumber:create
フェーズが実行されます。