Maven 项目获取 git 分支、提交等信息

git-commit-id-plugin 是一个 Maven 插件,用于在 Maven 项目的构建过程中自动获取 git 仓库的信息,如最后一次提交的 ID、分支名称、构建时间等,并将这些信息注入到项目的属性文件中。这对于跟踪项目版本和构建状态非常有用。

以下是如何在 Maven 项目中使用 git-commit-id-plugin 的基本步骤:

  1. 添加插件到 pom.xml 文件中:

    在你的 Maven 项目的 pom.xml 文件中,添加 git-commit-id-plugin<plugins> 部分。

    xml 复制代码
    <build>
        <plugins>
            <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>
                    <!-- 配置选项 -->
                </configuration>
            </plugin>
        </plugins>
    </build>
  2. 配置插件:

    <configuration> 标签中,你可以配置多种选项,例如生成的属性文件的位置、包含哪些 git 属性等。默认情况下,插件会生成一个 git.properties 文件在 target/classes 目录下。

    xml 复制代码
    <configuration>
        <dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
        <generateGitPropertiesFile>true</generateGitPropertiesFile>
        <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
        <format>properties</format>
    </configuration>
  3. 构建项目:

    使用 Maven 命令构建项目,例如 mvn clean install。在构建过程中,git-commit-id-plugin 插件会自动运行,并在指定的位置生成包含 git 信息的 git.properties 文件。

  4. 查看 git.properties 文件:

    打开生成的 git.properties 文件,你将看到类似以下的内容,其中包含了提交时间、提交记录、分支等信息:

    复制代码
    git.branch=main
    git.commit.id=abcdef1234567890
    git.commit.id.abbrev=abcdef1
    git.commit.time=2021-05-20T12:34:56Z
    git.commit.message.full=Initial commit
    git.commit.message.short=Initial commit
    git.commit.user.name=Your Name
    [email protected]
  5. 在应用中使用这些信息:

    你可以在应用程序中读取 git.properties 文件,并使用这些信息,例如显示当前版本的 Git 分支和提交 ID。

通过这种方式,你可以利用 git-commit-id-plugin 插件来自动获取和使用 Git 的提交时间、提交记录、分支等信息,从而帮助跟踪和管理你的项目版本。

相关推荐
牛马baby23 分钟前
Springboot 自动装配原理是什么?SPI 原理又是什么?
java·spring boot·后端
小小深44 分钟前
了解JVM
java·jvm
Sunlight_7771 小时前
第五章 SQLite数据库:1、SQLite 基础语法及使用案例
java·linux·服务器·jvm·数据库·tcp/ip·sqlite
JhonKI1 小时前
【从零实现高并发内存池】内存池整体框架设计 及 thread cache实现
java·redis·缓存
何似在人间5751 小时前
SpringAI+DeepSeek大模型应用开发——4 对话机器人
java·机器人·大模型应用开发·spring ai
-曾牛2 小时前
【LangChain4j快速入门】5分钟用Java玩转GPT-4o-mini,Spring Boot整合实战!| 附源码
java·开发语言·人工智能·spring boot·ai·chatgpt
kfepiza2 小时前
HttpSessionListener 的用法笔记250417
java·笔记·servlet·tomcat
冬天vs不冷2 小时前
SpringBoot条件注解全解析:核心作用与使用场景详解
java·spring boot·python
百锦再2 小时前
Android Studio 实现自定义全局悬浮按钮
android·java·ide·app·android studio·安卓
百锦再2 小时前
Android Studio 项目文件夹结构详解
android·java·ide·ios·app·android studio·idea