Maven ビルドで git ブランチとコミット ハッシュを使用する必要があります。
git に必要な情報を含む「git.properties」ファイルを自動的に維持させて、常に git の現在の状態を反映させる簡単な方法はありますか?
可能であれば、これをプラットフォームに依存しないソリューションにしたいと考えています
注 (2016 年ですが、実際には 2011 年 9 月に作成されました)、プロパティ ファイルに Git 情報をキャプチャする専用の maven プラグインがあります。
これはktoso/maven-git-commit-id-pluginのものです。
<dependency>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>2.2.1</version>
</dependency>
それで:
<plugins>
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>2.2.1</version>
<executions>
<phase>initialize</phase>
<execution>
<id>get-the-git-infos</id>
<goals>
<goal>revision</goal>
</goals>
</execution>
</executions>
<configuration>
<generateGitPropertiesFile>true</generateGitPropertiesFile>
</configuration>
</plugin>
</plugins>
あなたの場合、「この情報は Maven ビルド プロセスの早い段階で必要になる」<phase>initialize</phase>
ため、デフォルトの jar maven ライフサイクルでできるだけ早くトリガーするために を追加しました。
次に、プラグインの正確なバージョンを知るのに役立つ Git 関連のデバッグ データを出力するために、プラグインの実行中にそれを使用しました。
Properties prop = new Properties();
ClassLoader loader = Thread.currentThread().getContextClassLoader();
InputStream stream = loader.getResourceAsStream("git.properties");
if (stream != null) {
prop.load(stream);
String dirty = prop.getProperty("git.dirty");
if (dirty.equals("false")) {
dirty = "";
} else {
dirty = "(dirty)";
}
ver = ver + prop.getProperty("git.build.version")+dirty;
ver = ver + " - " + prop.getProperty("git.commit.id.describe");
ver = ver + " - " + prop.getProperty("git.build.time");
} else {
throw new MojoFailureException("Unable to find MyProject git.properties");
}