Spring Boot 2.0 Actuator /info端点未加载Git属性求助
解决Spring Boot 2.0.0.M7 + Gradle GitInfoContributor /info端点无数据问题
看起来你遇到了Spring Boot Actuator的/info端点无法加载Git信息的问题,结合你给出的场景和排查细节,我整理了几个针对性的解决思路:
1. 让IDEA完全依赖Gradle构建流程
你提到用gradle bootRun正常,但IDEA启动就失效,这大概率是因为IDEA用了内置的构建工具,没触发Gradle的processResources任务(gradle-git-properties正是在这个任务阶段生成git.properties)。
- 打开IDEA的
Settings -> Build, Execution, Deployment -> Build Tools -> Gradle,把Build and run using和Run tests using都改成Gradle,而不是IDEA的内置选项。这样IDEA启动项目时会先执行Gradle的完整资源处理流程,确保git.properties被生成并复制到正确位置。 - 手动验证下:执行
./gradlew processResources,然后去build/resources/main目录确认git.properties存在,再跑gradle clean build,用jar tf build/libs/你的应用.jar查看JAR包内是否包含这个文件。
2. 调整gradle-git-properties插件的执行时机
默认情况下,插件生成文件的时机可能太晚,导致后续的资源复制步骤没跟上。可以在build.gradle里显式配置插件的输出目录和任务依赖,确保文件在资源处理阶段就准备好:
gitProperties { outputDir = file("$buildDir/resources/main") // 让gitProperties任务在processResources前执行,同时processResources依赖它 tasks.gitProperties.dependsOn tasks.processResources tasks.processResources.dependsOn tasks.gitProperties }
这能避免生成的git.properties被后续的clean或打包步骤跳过。
3. 检查Spring Boot Actuator的自动配置是否被干扰
有时候自定义配置类可能无意中禁用了GitInfoContributor的自动加载,你可以:
- 查看项目启动日志,搜索
GitInfoContributor关键词,看是否有类似ConditionalOnResource的日志,确认Spring是否找到了git.properties文件。如果日志显示该组件未加载,说明文件路径不对或者没被正确读取。 - 确认配置文件里没有设置
management.info.enabled=false,这个配置会直接关闭所有/info端点的内容输出。
4. 给测试任务添加依赖
你提到执行gradle clean build时的测试会失效,这是因为测试任务可能在gitProperties任务执行前就启动了,导致上下文加载时没有git.properties。可以在build.gradle里添加:
test.dependsOn 'gitProperties'
这样测试执行前会先生成git.properties,确保测试时/info端点能正常读取到信息。
5. 清除IDEA缓存
IDEA的缓存有时候会“记住”旧的资源状态,导致新生成的git.properties没被加载。可以试试:
- 点击
File -> Invalidate Caches...,选择Invalidate and Restart清除缓存并重启IDEA。 - 手动删除IDEA自动生成的
out目录,然后重新执行gradle clean build,再用IDEA启动项目。
内容的提问来源于stack exchange,提问作者yyunikov
相关产品推荐
相关产品推荐

