很多时候虽然用了 Git 做了源代码的版本管理,但一般上线的版本都没会的Tag。最近线上项目出现了一个BUG,因为已经找不到线上代码对应的版本了,只好通过打包时间去找对应的版本然后修复BUG。如果要是每次打包都能把当前对应的版本信息放到 war/jar 包中就完美了,于是各种百度Maven 获取 Git 版本信息,终于找到了我想要的:
maven:读取程序版本号的三种方案
亲测可行,但你需要在pom.xml文件中加入scm配置信息:
<scm>
<connection>scm:git:git@gitee.com:gggg/test.git</connection>
</scm>
这个方案感觉还是不够完美;然后我在SpringBoot的pom.xml看到了下面这个配置(1.5.1.RELEASE版本的SpringBoot):
<pluginManagement>
<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>
<pluginManagement>
git-commit-id-plugin 这个插件就可以帮助我们获取Git相关信息,SpringBoot已经帮我们配置好了,我们需要在自己项目pom.xml中引入一下就ok了。
<plugins>
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
</plugin>
</plugins>
然后通过Maven打包,就能看到classes目录下生成了一个git.properties文件;
然后我们可以通过 SpringBoot Actuator获取Git相关信息。我们先引入Actuator依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
然后需在application.yml文件中把访问限制关闭,不然是无法方法Actuator端点的。
management.security.enabled: false
最后我们启动服务,通过 /info 端点即可获取如下信息:
如果你想要查看更详细的信息可以在application.yml文件中加入以下配置:
management.info.git.mode: full
再次访问 /info 端点即可获取更加详细的信息:
因为SpringBoot集成了git-commit-id-plugin 插件,所以我们使用起来更加方便,但从这个插件的名字就可以看出它只支持Git,如果你们使用的是SVN就没办法用这个方式,只好用这个方案了maven:读取程序版本号的三种方案。