Git-Commit-ID Maven插件配置与属性详解

Git-Commit-ID Maven插件配置与属性详解

git-commit-id-maven-plugin Maven plugin which includes build-time git repository information into an POJO / *.properties). Make your apps tell you which version exactly they were built from! Priceless in large distributed deployments... :-) git-commit-id-maven-plugin 项目地址: https://gitcode.com/gh_mirrors/gi/git-commit-id-maven-plugin

一、插件概述

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 关键配置说明

  1. generateGitPropertiesFile:设置为true时,插件会生成包含Git信息的属性文件
  2. generateGitPropertiesFilename:指定生成的属性文件路径和名称
  3. 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 验证功能详解

插件提供了强大的验证功能,可以在构建过程中检查各种条件:

  1. 验证非快照版本
<validationProperty>
    <name>验证项目版本</name>
    <value>${project.version}</value>
    <shouldMatchTo><![CDATA[^.*(?<!-SNAPSHOT)$]]></shouldMatchTo>
</validationProperty>
  1. 验证Git仓库是否干净
<validationProperty>
    <name>验证Git仓库状态</name>
    <value>${git.dirty}</value>
    <shouldMatchTo>false</shouldMatchTo>
</validationProperty>
  1. 验证当前提交是否有标签
<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.为前缀):

  1. 基础信息

    • git.branch:当前分支名称
    • git.commit.id:完整提交哈希
    • git.commit.id.abbrev:简短提交哈希
    • git.commit.time:提交时间
  2. 仓库状态

    • git.dirty:仓库是否有未提交更改
    • git.remote.origin.url:远程仓库URL
  3. 标签信息

    • git.tags:当前提交的所有标签
    • git.closest.tag.name:最近的标签名称
    • git.closest.tag.commit.count:距离最近标签的提交数
  4. 构建信息

    • git.build.time:构建时间
    • git.build.version:构建版本

五、最佳实践

  1. 生产环境验证:在发布构建时,建议配置验证规则确保:

    • 项目不是快照版本
    • Git仓库是干净的
    • 当前提交有对应的标签
  2. 多模块项目:对于多模块项目,设置<injectAllReactorProjects>true</injectAllReactorProjects>确保所有模块都能访问Git属性

  3. 构建阶段选择:默认在initialize阶段执行可以确保后续构建阶段都能使用Git信息

  4. 属性文件位置:将git.properties放在类路径下,便于应用运行时读取

通过合理配置Git-Commit-ID Maven插件,可以有效地将版本控制信息集成到构建过程和最终应用中,为部署和问题排查提供有力支持。

git-commit-id-maven-plugin Maven plugin which includes build-time git repository information into an POJO / *.properties). Make your apps tell you which version exactly they were built from! Priceless in large distributed deployments... :-) git-commit-id-maven-plugin 项目地址: https://gitcode.com/gh_mirrors/gi/git-commit-id-maven-plugin

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘冶琳Maddox

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值