Git-Commit-ID Maven插件配置与属性详解
一、插件概述
Git-Commit-ID Maven插件是一款用于在Maven构建过程中获取Git仓库信息的实用工具。它能够自动提取当前项目的Git提交信息(如提交ID、分支名称、标签等),并将这些信息注入到Maven构建过程中,或者生成包含这些信息的属性文件。
二、基础配置
2.1 最小化配置示例
以下是最基础的配置示例,它会在项目的输出目录中生成一个git.properties
文件,包含完整的Git版本信息:
<plugin>
<groupId>io.github.git-commit-id</groupId>
<artifactId>git-commit-id-maven-plugin</artifactId>
<version>9.0.1</version>
<executions>
<execution>
<id>get-the-git-infos</id>
<goals>
<goal>revision</goal>
</goals>
</execution>
</executions>
<configuration>
<generateGitPropertiesFile>true</generateGitPropertiesFile>
<generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
<commitIdGenerationMode>full</commitIdGenerationMode>
</configuration>
</plugin>
2.2 关键配置说明
- generateGitPropertiesFile:设置为
true
时,插件会生成包含Git信息的属性文件 - generateGitPropertiesFilename:指定生成的属性文件路径和名称
- commitIdGenerationMode:控制提交ID的生成模式,
full
表示完整提交哈希
三、高级配置
3.1 完整配置示例
<plugin>
<groupId>io.github.git-commit-id</groupId>
<artifactId>git-commit-id-maven-plugin</artifactId>
<version>9.0.1</version>
<executions>
<execution>
<id>get-the-git-infos</id>
<goals>
<goal>revision</goal>
</goals>
<phase>initialize</phase>
</execution>
<execution>
<id>validate-the-git-infos</id>
<goals>
<goal>validateRevision</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
<configuration>
<!-- 生成git.properties文件 -->
<generateGitPropertiesFile>true</generateGitPropertiesFile>
<generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
<!-- 验证配置 -->
<validationProperties>
<validationProperty>
<name>验证项目版本</name>
<value>${project.version}</value>
<shouldMatchTo><![CDATA[^.*(?<!-SNAPSHOT)$]]></shouldMatchTo>
</validationProperty>
</validationProperties>
<validationShouldFailIfNoMatch>true</validationShouldFailIfNoMatch>
<!-- 其他配置 -->
<injectAllReactorProjects>true</injectAllReactorProjects>
</configuration>
</plugin>
3.2 验证功能详解
插件提供了强大的验证功能,可以在构建过程中检查各种条件:
- 验证非快照版本:
<validationProperty>
<name>验证项目版本</name>
<value>${project.version}</value>
<shouldMatchTo><![CDATA[^.*(?<!-SNAPSHOT)$]]></shouldMatchTo>
</validationProperty>
- 验证Git仓库是否干净:
<validationProperty>
<name>验证Git仓库状态</name>
<value>${git.dirty}</value>
<shouldMatchTo>false</shouldMatchTo>
</validationProperty>
- 验证当前提交是否有标签:
<validationProperty>
<name>验证提交标签</name>
<value>${git.closest.tag.commit.count}</value>
<shouldMatchTo>0</shouldMatchTo>
</validationProperty>
3.3 验证执行配置
验证功能需要单独配置执行目标:
<executions>
<execution>
<id>validate-the-git-infos</id>
<goals>
<goal>validateRevision</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
四、可用属性列表
插件可以生成以下Git相关信息(所有属性默认以git.
为前缀):
-
基础信息:
git.branch
:当前分支名称git.commit.id
:完整提交哈希git.commit.id.abbrev
:简短提交哈希git.commit.time
:提交时间
-
仓库状态:
git.dirty
:仓库是否有未提交更改git.remote.origin.url
:远程仓库URL
-
标签信息:
git.tags
:当前提交的所有标签git.closest.tag.name
:最近的标签名称git.closest.tag.commit.count
:距离最近标签的提交数
-
构建信息:
git.build.time
:构建时间git.build.version
:构建版本
五、最佳实践
-
生产环境验证:在发布构建时,建议配置验证规则确保:
- 项目不是快照版本
- Git仓库是干净的
- 当前提交有对应的标签
-
多模块项目:对于多模块项目,设置
<injectAllReactorProjects>true</injectAllReactorProjects>
确保所有模块都能访问Git属性 -
构建阶段选择:默认在
initialize
阶段执行可以确保后续构建阶段都能使用Git信息 -
属性文件位置:将
git.properties
放在类路径下,便于应用运行时读取
通过合理配置Git-Commit-ID Maven插件,可以有效地将版本控制信息集成到构建过程和最终应用中,为部署和问题排查提供有力支持。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考