SpringBoot 启动输出 Git 版本信息
文章目录
- SpringBoot 启动输出 Git 版本信息
- 1. 环境依赖
- 2. pom.xml 配置
- 3. 启动类配置
为了方便记录项目打包时的 Git 版本,本文将介绍如何将 Git 版本信息打包进 JAR 文件,并在项目启动时输出。
1. 环境依赖
- SpringBoot 2.7.13;
- git-commit-id-maven-plugin 4.9.9;
2. pom.xml 配置
<build>
<plugins>
<plugin>
<groupId>io.github.git-commit-id</groupId>
<artifactId>git-commit-id-maven-plugin</artifactId>
<version>4.9.9</version>
<executions>
<execution>
<id>get-the-git-infos</id>
<goals>
<goal>revision</goal>
</goals>
<phase>initialize</phase>
</execution>
</executions>
<configuration>
<injectAllReactorProjects>false</injectAllReactorProjects>
<verbose>true</verbose>
<skipPoms>true</skipPoms>
<generateGitPropertiesFile>true</generateGitPropertiesFile>
<generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
<generateGitPropertiesFileWithEscapedUnicode>false</generateGitPropertiesFileWithEscapedUnicode>
<dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
<format>properties</format>
<prefix>git</prefix>
<dateFormat>yyyy-MM-dd HH:mm:ss</dateFormat>
<dateFormatTimeZone>${user.timezone}</dateFormatTimeZone>
<failOnNoGitDirectory>false</failOnNoGitDirectory>
<failOnUnableToExtractRepoInfo>false</failOnUnableToExtractRepoInfo>
<useNativeGit>false</useNativeGit>
<skip>false</skip>
<runOnlyOnce>false</runOnlyOnce>
<commitIdGenerationMode>full</commitIdGenerationMode>
<evaluateOnCommit>HEAD</evaluateOnCommit>
<useBranchNameFromBuildEnvironment>true</useBranchNameFromBuildEnvironment>
<injectIntoSysProperties>true</injectIntoSysProperties>
<offline>true</offline>
</configuration>
</plugin>
</plugins>
</build>
3. 启动类配置
package com.xiaoqqya.gitinfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.info.GitProperties;
import org.springframework.context.ConfigurableApplicationContext;
/**
* Spring boot git info demo.
*
* @author <a href="mailto:xiaoQQya@126.com>xiaoQQya</a>
* @since 2023/07/11
*/
@SpringBootApplication
public class GitInfoApplication {
private static final Logger LOGGER = LoggerFactory.getLogger(GitInfoApplication.class);
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(GitInfoApplication.class, args);
printGitInfo(context);
}
/**
* 输出 Git 版本控制信息.
*
* @param context SpringBoot 上下文信息
*/
private static void printGitInfo(ConfigurableApplicationContext context) {
try {
if (LOGGER.isInfoEnabled()) {
GitProperties gitProperties = context.getBean(GitProperties.class);
LOGGER.info("Git branch: {}", gitProperties.get("branch"));
LOGGER.info("Git build time: {}", gitProperties.get("build.time"));
LOGGER.info("Git commit id: {}", gitProperties.get("commit.id.full"));
LOGGER.info("Git commit user: {}", gitProperties.get("commit.user.name") + "<" + gitProperties.get("commit.user.email") + ">");
LOGGER.info("Git commit time: {}", gitProperties.get("commit.time"));
LOGGER.info("Git commit message: {}", gitProperties.get("commit.message.full"));
}
} catch (NoSuchBeanDefinitionException e) {
LOGGER.warn(e.getMessage());
}
}
}
参考文章:
- git-commit-id/git-commit-id-maven-plugin (github.com);
- Injecting Git Information Into Spring Beans | Baeldung;
- springboot获取项目git版本信息的几种方式_gitproperties_sky~hello的博客-CSDN博客;