私は Maven を使用しており、バージョン番号に git コミット ハッシュを含めることを目標としています。たとえば、1.1.{git_hash} のようになります。
私はこれに従うつもりですチュートリアル。
Q: pom ファイルのバージョン要素で指定されたバージョン番号を何らかの方法で上書きすることは可能ですか?
ベストアンサー1
これを実現する一つの方法は、git コミット ID プラグインbuild
pom.xml のセクションのプラグインのリストにこれを追加します。
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>${git-commit-id-plugin.version}</version>
<executions>
<execution>
<id>get-the-git-infos</id>
<goals>
<goal>revision</goal>
</goals>
<phase>validate</phase>
</execution>
</executions>
<configuration>
<dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
</configuration>
</plugin>
フェーズを に変更したのでvalidate
、アーティファクトがパッケージ化された時点で、リビジョン番号プロパティがすでに使用可能になっていることに注意してください。
次に、build
セクションに次の内容を追加します。
<build>
<finalName>${project.artifactId}-${project.version}-${git.commit.id.describe-short}</finalName>
<!-- your list of plugins -->
</build>
このgit.commit.id.describe-short
プロパティは によって生成されますgit-commit-id-plugin
。現在の git リビジョン番号 (7 桁に短縮) とオプションのdirty
インジケーターが含まれます。
生成されたアーティファクトは次のようになりますexamplelib-1.0.2-efae3b9.jar
(または、examplelib-1.0.2-efae3b9-dirty.jar
リポジトリにコミットされていない変更がある場合)。
さらに、この情報をアーティファクトの MANIFEST.MF に追加することもできます。その場合は、プラグインのリストにこれを追加します (例では、アーティファクトが であると想定していますjar
)。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestEntries>
<SCM-Revision>${git.commit.id.describe-short}</SCM-Revision>
</manifestEntries>
</archive>
</configuration>
</plugin>
追加コメント:
の簡単な構成を示しました
git-commit-id-plugin
。彼らのサイトでは、さらに多くのオプションとプロパティを見つけることができます。pom.xml 内で使用できるプロパティに加えて、プラグインはリビジョンに関する情報を含むプロパティ ファイルも生成できます。の代わりとして
git-commit-id-plugin
、ビルド番号-Maven-プラグインこのプラグインでリビジョン番号を取得するには、SCMプラグインも pom.xml で構成されます。この設定は、アーティファクトを変換または名前変更する他のプラグインに干渉する可能性があります (私の場合は maven-shade-plugin でした - 生成されるソース jar の 1 つに適切なリビジョン番号が含まれていませんでした)。