首页/开发/CI/CD 与发布速查/Gradle 构建缓存
构建与制品管理58 条

Gradle 构建缓存

任务级缓存:相同输入的任务直接复用结果(本地与远程两类),配合配置缓存进一步减少配置阶段开销。

CI/CD 与发布速查开发更新于 2026-10-13

Gradle 构建缓存是什么

Gradle 的任务级缓存:任务输入不变时直接复用上次的输出,分本地缓存与远程缓存两类;配合配置缓存还能减少配置阶段的开销。任务必须声明输入输出才可被缓存,未声明的任务视为不可缓存。CI 上共享远程缓存收益最大——本地构建产物能被构建机直接复用。

基本信息

启用org.gradle.caching=true;CI 可接远程缓存节点
输入输出任务声明输入输出决定缓存命中;未声明即不可缓存
加速点配合 --build-cache 与增量构建;配置缓存独立设置
本地缓存默认位于 Gradle 用户目录下的构建缓存区
远程缓存在 settings 脚本里配置缓存节点地址,团队共享

典型使用场景

  • CI 提速:各构建机共享远程缓存,避免重复编译
  • 多模块工程:模块任务命中缓存缩短整体时长
  • 配置阶段开销大:开配置缓存复用配置结果
  • 团队共享:本地构建产物推到远程供他人复用
  • 排查未命中:定位哪些输入在变化导致缓存失效

gradle.properties

gradle.properties
org.gradle.caching=true              # 任务级构建缓存
org.gradle.parallel=true             # 并行执行无依赖任务
org.gradle.configuration-cache=true  # 复用配置阶段结果
# 远程缓存在 settings.gradle(.kts) 里配置节点地址

缓存未命中排查

现象常见原因处理
每次都全量执行任务未声明输入输出补声明或放弃该任务缓存
部分任务不命中输入含时间戳、绝对路径剔除易变输入或规范化路径
远程不命中缓存节点不可达或键不一致查节点连通与缓存配置
远程缓存对 CI 收益明显:本地构建产物可被构建机直接复用。
配置缓存与部分老旧插件不兼容:先在一台构建机上观察兼容性,再全量开启。

易错点

  • 任务输入包含时间戳/绝对路径:缓存永不命中,排查键输入
  • 远程缓存未做可信域隔离:只允许受信构建写缓存,防止污染
  • 只开缓存不接远程节点:单机收益有限,CI 要共享远程缓存
  • 缓存目录纳入清理脚本:CI 清理误删本地缓存,命中率骤降,清理范围要排除缓存目录
  • CI 每次用全新容器又不接远程:缓存随容器销毁,构建时长原地踏步

数据来源与参考

  • Gradle 文档《Build Cache》
  • Gradle 文档《Configuration Cache》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌