第一种方式,使用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内的信息。
总结,上面两种在开发中都可以使用,各位可以根据喜好选择其中一种即可