赞
踩
在开发项目的时候,我们经常会想要拿到线上运行的程序版本,以确定程序是否正确发布。Spring Boot提供了这样的能力支持。这个能力的核心组件是3个:
首先我们需要在pom.xml里引入插件,在build/plugins/plugin配置插件git-commit-id-maven-plugin的
- <?xml version="1.0" encoding="UTF-8"?>
-
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
-
- ...
- <build>
- <plugins>
- <plugin>
- <groupId>io.github.git-commit-id</groupId>
- <artifactId>git-commit-id-maven-plugin</artifactId>
- <configuration>
- <generateGitPropertiesFile>true</generateGitPropertiesFile>
- <generateGitPropertiesFilename>
- ${project.build.outputDirectory}/git.properties
- </generateGitPropertiesFilename>
- </configuration>
- </plugin>
- ...
- </plugins>
- </build>
-
- </project>
执行插件git-commit-id:revision,查看生成的target,最终会在class目录下创建一个git.properties文件
mvn clean package git-commit-id:revision
看一下生成的git.properties文件,可以看到,里边不仅有版本号(commit.id),还有分支(git.branch),用户名(user.name)等信息
SpringBoot定义了一个AutoConfiguration类(ProjectInfoAutoConfiguration),基于条件创建GitProperties对象。
GitResourceAvailableCondition通过环境变量spring.info.git.location获取git.proerties文件的路径。如果没有设置环境变量则直接查看classpath:git.properties。
获取配置文件的路径后,通过ResourceLoader#getResource(location)判断这个文件是否存在。
ProjectInfoAutoConfiguration是一个AutoConfiguration类,定义了一个@Bean方法,创建一个GitProperties Bean。后续只需要引用这个Bean即可。
在我们的业务代码中只需要直接注入GitProperties Bean即可,GitProperties有5个核心方法:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。