gitコミットハッシュをjarバージョンに含める 質問する

gitコミットハッシュをjarバージョンに含める 質問する

私は Maven を使用しており、バージョン番号に git コミット ハッシュを含めることを目標としています。たとえば、1.1.{git_hash} のようになります。

私はこれに従うつもりですチュートリアル

Q: pom ファイルのバージョン要素で指定されたバージョン番号を何らかの方法で上書きすることは可能ですか?

ベストアンサー1

これを実現する一つの方法は、git コミット ID プラグインbuildpom.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>

追加コメント:

  1. の簡単な構成を示しましたgit-commit-id-plugin。彼らのサイトでは、さらに多くのオプションとプロパティを見つけることができます。pom.xml 内で使用できるプロパティに加えて、プラグインはリビジョンに関する情報を含むプロパティ ファイルも生成できます。

  2. の代わりとしてgit-commit-id-pluginビルド番号-Maven-プラグインこのプラグインでリビジョン番号を取得するには、SCMプラグインも pom.xml で構成されます。

  3. この設定は、アーティファクトを変換または名前変更する他のプラグインに干渉する可能性があります (私の場合は maven-shade-plugin でした - 生成されるソース jar の 1 つに適切なリビジョン番号が含まれていませんでした)。

おすすめ記事