You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle缓存指纹计算时忽略build-info.properties且保留运行时可用

解决Gradle中build-info.properties导致缓存失效且不影响应用运行的问题

你的核心需求是保留build-info.properties供应用运行时读取,但排除它参与Gradle任务的缓存指纹计算,针对Gradle 6.8.1和SpringBoot 2.2.2,正确的配置方式如下:

完整配置示例

  1. 保留SpringBoot buildInfo任务生成版本文件:
springBoot {
    buildInfo()
}
  1. 配置runtimeClasspath归一化规则,跳过build-info.properties的指纹计算:
normalization {
    runtimeClasspath {
        ignore "**/build-info.properties"
    }
}

配置原理

  • buildInfo()任务会在META-INF目录生成包含项目版本的build-info.properties,供Spring应用运行时读取以注入日志元数据。
  • Gradle的normalization配置用于调整任务输入输出的指纹校验逻辑,runtimeClasspath下的ignore规则会让Gradle在计算类路径指纹时忽略指定文件。这样即使项目版本每次构建都变化,也不会触发依赖runtimeClasspath的任务(如测试任务)缓存失效。
  • 该配置仅修改指纹计算规则,不会移除build-info.properties文件本身,因此应用启动时仍能正常读取文件内容,不会出现文件缺失或为空的启动失败问题。

问题补充说明

你之前遇到的文件不可用或为空的问题,经排查是构建脚本其他位置的配置错误导致,上述归一化配置本身可以完全解决初始需求——既保留运行时对版本文件的读取能力,又避免版本变更破坏Gradle缓存复用。

内容的提问来源于stack exchange,提问作者Jdv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 02:50:28