<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
spring boot父项目的PluginManagement中已经包含git-commit-id-plugin这个插件,这个插件的作用是在指定阶段(goal)读取git仓库信息并在对应目录生成git.properties文件。
<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>
由于该插件是非强制继承的,我们需要在自己项目pom中显式地继承此插件,但不需要再做其他版本之类的配置。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
</plugin>
</plugins>
</build>
该插件生成的git.properties文件内容如下:
[email protected]
git.build.host=xxx.local
git.dirty=true
git.remote.origin.url=git@xxxxxx
git.closest.tag.name=v3.17.0
git.commit.id.describe-short=v3.17.0-44-dirty
[email protected]
git.commit.time=2019-04-08T10\:23\:34+0800
git.commit.message.full=xxx
git.build.version=3.16.2
git.commit.message.short=一次提交
git.commit.id.abbrev=3570d29
git.branch=master
git.build.user.name=king
git.closest.tag.commit.count=44
git.commit.id.describe=v3.17.0-44-g3570d29-dirty
git.commit.id=3570d291b18e8d10b833fbbe0c6cc1c32c771b24
git.tags=
git.build.time=2019-04-08T10\:30\:15+0800
git.commit.user.name=king
之前本人想自己使用这个插件把git.properties生成到resources目录下,然后通过@ConfigurationProperties和@PropertySource将配置文件映射为java对象,后来发现原来SpringBoot自己已经为我们提供了一个GitProperties类,并且已经在启动时生成并加入到容器管理中,我们只需使用即可。
通过Spring Boot Admin的Beans管理来观察下这个GitProperties。>如何搭建
在Spring Boot应用中,只需要通过注解注入就可以直接使用了。
@Autowired
private GitProperties git;
该类仅提供了4个属性如下,不过也够用了。
{
branch: "master",
commitId: "00df6fad7ef69954b35037c549c4b93956fda4e8",
shortCommitId: "00df6fa",
commitTime: "2019-04-09T03:04:24Z"
}