第一种方式,使用GitProperties类

      首先,pom.xml作如下的配置

<!-- git版本信息 -->
<plugin>
   <groupId>pl.project13.maven</groupId>
   <artifactId>git-commit-id-plugin</artifactId>
   <executions>
      <execution>
         <goals>
            <goal>revision</goal>
         </goals>
      </execution>
   </executions>
   <configuration>
      <verbose>true</verbose>
      <dateFormat>yyyy-MM-dd'T'HH:mm:ssZ</dateFormat>
      <generateGitPropertiesFile>true</generateGitPropertiesFile>
      <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
   </configuration>
</plugin>

      springboot为我们提供了一个类GitProperties,可以使用这个类来获取项目的版本信息,使用的时候可以自动注入就可以使用了,GitProperties已经自动提供了4个方法来获取版本信息,但是有的小伙伴可能需要输出更多的版本信息就觉得这个类不适用,仔细想想,springboot不会给我们提供一个很鸡肋的类来供我们使用的,想要更多的信息,当然可以,先看下面的代码:

@RestController
public class TestProperties {
    @Autowired
    private GitProperties git;

    @RequestMapping("/getVersion")
    public JSONObject adad(){
        JSONObject jsonObject = new  JSONObject();
        //默认提供的四个版本信息
        String branch = git.getBranch();
        String commitId = git.getCommitId();
        Instant commitTime = git.getCommitTime();
        String shortCommitId = git.getShortCommitId();
        //可以自己根据需要查询额外的版本信息
        String email = git.get("build.user.email");
        jsonObject.put("branch",branch);
        jsonObject.put("commitId",commitId);
        jsonObject.put("commitTime",commitTime);
        jsonObject.put("shortCommitId",shortCommitId);
        jsonObject.put("email",email);
        return jsonObject;
    }
}

上面的代码请求后输出结果是:

看,是不是可以获得你想要的Git版本信息,原因是什么?这个我们要进入到GitProperties类去看,进入后是下面这样

你会发现,GitProperties继承了父类InfoProperties,而实际上GitProperties为我们提供好的四个git版本信息实际上是调用了父类的get(String key)方法,所以你当然也可以获取除了GitProperties类给你提供好的四个git版本信息之外的版本信息了。

第二种方式,通过监控actuator

springboot的actuator模块为我们提供了监控所需要的很多的接口,使用时先要在pom.xml中一如下面的依赖:

<!-- 通过 SpringBoot Actuator获取Git相关信息 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

然后在application.yml获取application.properties文件中写入相关的配置,这里只提供application.yml的配置

management:
  endpoints:
    web:
      base-path: /  #Spring Boot 2.0的端点基础路径由“/”调整到”/actuator”下,如:/info调整为/actuator/info,可以通过以下配置改为和旧版本一致
  info:
    git:
      mode: simple  #项目git版本信息展示 full 展示信息多 simple 展示信息少

下面定义了一些输出信息,

info:
  app:
   version: project_version_1.0 #自定义一些信息,指定的系统版本
   encoding: '@project.build.sourceEncoding@'  #获取pom.xml里的信息
   java:
     source: '@java.version@'
     target: '@java.version@'

注意:info下的配置可以自定义一些内容也可以通过@java.version@的方式获取pom.xml内的信息。

总结,上面两种在开发中都可以使用,各位可以根据喜好选择其中一种即可

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐