Spring Boot中使用Actuator的/info端点输出Git版本信息

发布时间 - 2026-01-11 01:38:39    点击率:

对于Spring Boot的Actuator模块相信大家已经不陌生了,尤其对于其中的/health、/metrics等强大端点已经不陌生(如您还不了解Actuator模块,建议先阅读《Spring Boot Actuator监控端点小结》)。但是,其中还有一个比较特殊的端点/info经常被大家所忽视,因为从最初的理解,它主要用来输出application.properties配置文件中通过info前缀来定义的一些属性,由于乍看之下可能想不到太多应用场景,只是被用来暴露一些应用的基本信息,而基本信息本身也可以在与Spring Cloud结合时作为服务治理的注册信息统一管理,所以这个端点的用处并不是很大。

然而实际上,该端点除了描述应用信息之外,也还可以用来描述Git版本信息,并且整合方法非常简单,下面我们就来看看如何使用/info端点暴露当前应用的Git版本信息。

POM配置

首先,我们可以挑选任意一个Spring Boot项目,修改它的pom.xml

  • 引入spring-boot-starter-actuator,提供/info端点
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  • 添加git-commit-id-plugin插件,该插件用来产生git的版本信息
<plugin>
 <groupId>pl.project13.maven</groupId>
 <artifactId>git-commit-id-plugin</artifactId>
 <version>2.1.15</version>
 <executions>
 <execution>
 <goals>
 <goal>revision</goal>
 </goals>
 </execution>
 </executions>
 <configuration>
 <dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
 </configuration>
</plugin>

产生git版本信息

  • 在完成了上面的配置之后,执行git-commit-id-plugin插件

运行完成后,我们可以在控台中看到类似下面的信息:

[INFO] pl.project13.maven.git.log.MavenLoggerBridge - dotGitDirectory E:\git_project\oschina\SpringBoot-Learning\.git
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - git.build.user.name didi
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - git.build.user.email dyc87112@qq.com
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - git.branch master
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - --always = true
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - --dirty = -dirty
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - --abbrev = 7
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - Tag refs [ [Ref[refs/tags/chapter1=ec8713f61cd49569886708a08adea02c8ef0a112]] ]
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - Created map: [ {} ] 
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - HEAD is [ e0540b3524378de9b5d938668a0f75ec016fa5e5 ] 
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - Repo is in dirty state [ true ]
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - git.commit.id.describe e0540b3-dirty
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - git.commit.id e0540b3524378de9b5d938668a0f75ec016fa5e5
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - git.commit.id.abbrev e0540b3
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - git.dirty true
...

同时,在target/classes目录下,我们可以发现产生了一个git.properties配置信息:

这个文件就是当前项目的git信息,它的内容如下:

#Generated by Git-Commit-Id-Plugin
#Thu Jun 01 17:57:53 CST 2017
git.build.user.email=dyc87112@qq.com
git.build.host=Lenovo-zhaiyc
git.dirty=true
git.remote.origin.url=https\://git.oschina.net/didispace/SpringBoot-Learning.git
git.closest.tag.name=chapter1
git.commit.id.describe-short=e0540b3-dirty
git.commit.user.email=dyc87112@qq.com
git.commit.time=2017-06-01T17\:57\:10+0800
git.commit.message.full=update
git.build.version=1.0.0
git.commit.message.short=update
git.commit.id.abbrev=e0540b3
git.branch=master
git.build.user.name=didi
git.closest.tag.commit.count=240
git.commit.id.describe=e0540b3-dirty
git.commit.id=e0540b3524378de9b5d938668a0f75ec016fa5e5
git.tags=
git.build.time=2017-06-01T17\:57\:53+0800
git.commit.user.name=didi

启动测试

完成了上述配置之后,启动应用并访问端点,比如:curl localhost:8080/info,我们可以获得如下输出:

{
 "git": {
 "commit": {
 "time": 1496311030000,
 "id": "e0540b3"
 },
 "branch": "master"
 }
}

其中包含了关于branch和commit的基础信息。而这个信息格式是最简模式,我们也可以通过配置下面的参数来获取更全面的git信息:

management.info.git.mode=full

重启应用后再访问/info端点,可以获得类似下面更为详细的版本信息了。

{
 "git": {
 "build": {
 "host": "Lenovo-zhaiyc",
 "version": "1.0.0",
 "time": 1496311073000,
 "user": {
 "name": "didi",
 "email": "dyc87112@qq.com"
 }
 },
 "branch": "master",
 "commit": {
 "message": {
 "short": "update",
 "full": "update"
 },
 "id": "e0540b3524378de9b5d938668a0f75ec016fa5e5",
 "id.describe-short": "e0540b3-dirty",
 "id.abbrev": "e0540b3",
 "id.describe": "e0540b3-dirty",
 "time": 1496311030000,
 "user": {
 "email": "dyc87112@qq.com",
 "name": "didi"
 }
 },
 "closest": {
 "tag": {
 "name": "chapter1",
 "commit": {
 "count": "240"
 }
 }
 },
 "dirty": "true",
 "remote": {
 "origin": {
 "url": "https://git.oschina.net/didispace/SpringBoot-Learning.git"
 }
 },
 "tags": ""
 }
}

代码示例:Chapter6-2-1

Github:https://github.com/dyc87112

码云:http://git.oschina.net/didispace/SpringBoot-Learning

以上所述是小编给大家介绍的Spring Boot中使用Actuator的/info端点输出Git版本信息,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# spring  # boot  # 输出git版本信息  # springboot使用Logback把日志输出到控制台或输出到文件  # Springboot如何使用Map将错误提示输出到页面  # Springboot使用@Valid 和AOP做参数校验及日志输出问题  # Spring Boot异步输出Logback日志方法详解  # SpringBoot通过yml和xml文件配置日志输出方法  # spring boot实现自动输出word文档功能的实例代码  # 我们可以  # 可以获得  # 小编  # 完成了  # 太多  # 在此  # 还不  # 可以通过  # 给大家  # 还有一个  # 就来  # 在与  # 重启  # 如您  # 所述  # 如何使用  # 给我留言  # 也还  # 配置文件  # 感谢大家 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  济南网站建设制作公司,室内设计网站一般都有哪些功能?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  简历在线制作网站免费版,如何创建个人简历?  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  JavaScript如何实现路由_前端路由原理是什么  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  如何在企业微信快速生成手机电脑官网?  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  ,网页ppt怎么弄成自己的ppt?  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  大学网站设计制作软件有哪些,如何将网站制作成自己app?  Laravel如何使用.env文件管理环境变量?(最佳实践)  如何在阿里云ECS服务器部署织梦CMS网站?  Python文件异常处理策略_健壮性说明【指导】  香港服务器选型指南:免备案配置与高效建站方案解析  JavaScript常见的五种数组去重的方式  如何用PHP工具快速搭建高效网站?  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  如何在建站之星绑定自定义域名?  jQuery 常见小例汇总  焦点电影公司作品,电影焦点结局是什么?  青岛网站建设如何选择本地服务器?  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  如何在Windows虚拟主机上快速搭建网站?  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  网站制作企业,网站的banner和导航栏是指什么?  Android Socket接口实现即时通讯实例代码  ,交易猫的商品怎么发布到网站上去?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  常州企业网站制作公司,全国继续教育网怎么登录?  网易LOFTER官网链接 老福特网页版登录地址  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  如何在万网利用已有域名快速建站?  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  Laravel如何处理和验证JSON类型的数据库字段