SpringBoot: 读取项目的Git版本号

作者 : admin 本文共1254个字,预计阅读时间需要4分钟 发布时间: 2024-06-5 共2人阅读

在开发项目的时候,我们经常会想要拿到线上运行的程序版本,以确定程序是否正确发布。Spring Boot提供了这样的能力支持。这个能力的核心组件是3个:

  1. Maven插件git-commit-id-maven-plugin,用于生成.properties文件,里边包含git的各种信息
  2. 加载git.properties文件,ProjectInfoAutoConfiguration判断是否存在git的properties文件,注册GitProperties Bean
  3. 引用GitProperties Bean,读取git信息

1. 使用Maven插件

首先我们需要在pom.xml里引入插件,在build/plugins/plugin配置插件git-commit-id-maven-plugin的






    ...
    
        
            
                io.github.git-commit-id
                git-commit-id-maven-plugin
                
                    true
                    
                        ${project.build.outputDirectory}/git.properties
                    
                
            
            ...
        
    

执行插件git-commit-id:revision,查看生成的target,最终会在class目录下创建一个git.properties文件

mvn clean package git-commit-id:revision

SpringBoot: 读取项目的Git版本号插图

看一下生成的git.properties文件,可以看到,里边不仅有版本号(commit.id),还有分支(git.branch),用户名(user.name)等信息 

SpringBoot: 读取项目的Git版本号插图(1)

2. 加载git.properties文件

SpringBoot定义了一个AutoConfiguration类(ProjectInfoAutoConfiguration),基于条件创建GitProperties对象。

1. 条件对象

GitResourceAvailableCondition通过环境变量spring.info.git.location获取git.proerties文件的路径。如果没有设置环境变量则直接查看classpath:git.properties。

获取配置文件的路径后,通过ResourceLoader#getResource(location)判断这个文件是否存在。

SpringBoot: 读取项目的Git版本号插图(2)

2. 创建Bean

ProjectInfoAutoConfiguration是一个AutoConfiguration类,定义了一个@Bean方法,创建一个GitProperties Bean。后续只需要引用这个Bean即可。

SpringBoot: 读取项目的Git版本号插图(3)

3. 引用GitProperties Bean

在我们的业务代码中只需要直接注入GitProperties Bean即可,GitProperties有5个核心方法:

  1. getBranch,获取分支
  2. getCommitId,获取提交版本号
  3. getShortCommitId,获取短的提交版本号
  4. get,按属性名读取git.properties文件,返回String类型
  5. getInstant,按属性名读取git.properties文件,返回Instant类型

SpringBoot: 读取项目的Git版本号插图(4)

本站无任何商业行为
个人在线分享 » SpringBoot: 读取项目的Git版本号
E-->