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>