Maven 專案獲取 Git 的提交分支、commit id、構建時間等資訊

瘦风發表於2024-11-02

git-commit-id-plugin 是一個 Maven 外掛,用於在 Maven 專案的構建過程中自動獲取 git 倉庫的資訊,如最後一次提交的 ID、分支名稱、構建時間等,並將這些資訊注入到專案的屬性檔案中。這對於跟蹤專案版本和構建狀態非常有用。

以下是如何在 Maven 專案中使用 git-commit-id-plugin 的基本步驟:

1 新增外掛到 pom.xml 檔案中

在你的 Maven 專案的 pom.xml 檔案中,新增 git-commit-id-plugin<plugins> 部分。

  <build>
    <plugins>
      <plugin>
        <!-- https://mvnrepository.com/artifact/pl.project13.maven/git-commit-id-plugin -->
        <groupId>pl.project13.maven</groupId>
        <artifactId>git-commit-id-plugin</artifactId>
        <version>4.0.5</version>
        <executions>
          <execution>
            <goals>
              <goal>revision</goal>
            </goals>
          </execution>
        </executions>
        <!-- 配置選項 -->
        <configuration>
          <dotGitDirectory>${project.basedir}/../.git</dotGitDirectory>
          <generateGitPropertiesFile>true</generateGitPropertiesFile>
          <failOnNoGitDirectory>false</failOnNoGitDirectory>
          <skipPoms>false</skipPoms>
          <generateGitPropertiesFilename>
            ${project.build.outputDirectory}/git.properties
          </generateGitPropertiesFilename>
          <gitDescribe>
            <!-- don't generate the describe property -->
            <skip>false</skip>
            <!-- abbrev commit id length -->
            <abbrev>8</abbrev>
          </gitDescribe>
          <includeOnlyProperties>
            <includeOnlyProperty>^git.branch$</includeOnlyProperty>
            <includeOnlyProperty>^git.build.(time|version)$</includeOnlyProperty>
            <includeOnlyProperty>^git.commit.(id|time)$</includeOnlyProperty>
            <includeOnlyProperty>^git.commit.id.abbrev$</includeOnlyProperty>
          </includeOnlyProperties>
        </configuration>
      </plugin>
    </plugins>
  </build>

2 配置外掛

<configuration> 標籤中,你可以配置多種選項,例如生成的屬性檔案的位置、包含哪些 git 屬性等。預設情況下,外掛會生成一個 git.properties 檔案在 target/classes 目錄下。

   <configuration>
       <dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
       <generateGitPropertiesFile>true</generateGitPropertiesFile>
       <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
       <format>properties</format>
   </configuration>
  1. 構建專案:

使用 Maven 命令構建專案,例如 mvn clean install。在構建過程中,git-commit-id-plugin 外掛會自動執行,並在指定的位置生成包含 git 資訊的 git.properties 檔案。

4 檢視 git.properties 檔案

開啟生成的 git.properties 檔案,你將看到類似以下的內容,其中包含了提交時間、提交記錄、分支等資訊:

#Generated by Git-Commit-Id-Plugin
git.branch=main
git.build.host=heal-mac
git.build.time=2024-10-30T15\:04\:10+0800
git.build.version=1.0.0-SNAPSHOT

git.commit.id=abcdef1234567890
git.commit.id.abbrev=abcdef1
git.commit.time=2024-10-28T12\:34\:56+0800

git.commit.message.full=Initial commit
git.commit.message.short=Initial commit

git.commit.user.name=Your Name
git.commit.user.email=your.email@example.com

git.commit.author.time=2024-10-26T21\:11\:39+0800
git.commit.committer.time=2024-10-26T21\:11\:39+0800

5 在應用中使用這些資訊

你可以在應用程式中讀取 git.properties 檔案,並使用這些資訊,例如顯示當前版本的 Git 分支和提交 ID。

透過這種方式,你可以利用 git-commit-id-plugin 外掛來自動獲取和使用 Git 的提交時間、提交記錄、分支等資訊,從而幫助跟蹤和管理你的專案版本。

相關文章