私はmavenを使用しています。私の目標は、バージョン番号にgitコミットハッシュを含めることです。 1.1。{git_hash}のようなもの。
私はこれをフォローしようとしています チュートリアル 。
Q:pomファイルのバージョン要素で指定されたバージョン番号を何らかの方法でオーバーライドすることは可能ですか?
これを実現する1つの方法は、 git-commit-id-plugin を使用することです。これをpom.xmlのbuild
セクションのプラグインのリストに追加します。
<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
の代わりに、 buildnumber-maven-plugin を好むかもしれません。リビジョン番号を取得するために、このプラグインには [〜#〜] scm [〜#〜] プラグインもpom.xmlで設定する必要があります。
このセットアップは、アーティファクトを変換または名前変更する他のプラグインと干渉する可能性があります(私の場合はmaven-shade-pluginでした-生成するソースjarの1つに適切なリビジョン番号が含まれていませんでした)。
上記の受け入れられた答えは私にとってはうまくいきませんでした。リンクを見つけました https://dzone.com/articles/maven-git-commit-id-plugin 、ここからプラグインコードをコピーしました。私にとっては初めてでした。これで、ターゲットJARファイルにgit.propertiesファイルが自動的に含まれるようになりました。追跡に非常に便利です。
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>2.2.4</version>
<executions>
<execution>
<id>get-the-git-infos</id>
<goals>
<goal>revision</goal>
</goals>
</execution>
</executions>
<configuration>
<dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
<prefix>git</prefix>
<verbose>false</verbose>
<generateGitPropertiesFile>true</generateGitPropertiesFile>
<generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
<format>json</format>
<gitDescribe>
<skip>false</skip>
<always>false</always>
<dirty>-dirty</dirty>
</gitDescribe>
</configuration>
ビルドセクションにfinalNameを追加して、ターゲットファイル名にもバージョンを含める
<build>
<finalName>${project.artifactId}-${project.version}-${git.commit.id.describe-short}</finalName>
...
</build>