gradle依赖缓存本身不加快离线构建速度,而是使离线构建成为可能的前提;真正提速需确保缓存已完整下载、关闭远程检查(--offline)、禁用动态版本、启用依赖锁定与构建缓存。

Gradle 的依赖缓存(Dependency Cache)本身不是用来“加快离线构建速度”的工具,而是让离线构建成为可能的前提——它把远程下载的依赖(JAR、POM、metadata 等)本地化存储,后续构建时直接复用,无需联网。真正“加快离线构建”的关键,在于确保依赖缓存已就绪,并配合其他机制避免重复解析和网络检查。
确保依赖缓存已完整下载
离线构建能跑起来,前提是所有依赖都已提前下载并存入本地缓存。否则 Gradle 会报错(如 Could not resolve …)。
- 在有网环境下,先执行一次完整构建:
./gradlew build或./gradlew assembleDebug(Android 项目),Gradle 会自动下载所有依赖并存入~/.gradle/caches/modules-2/files-2.1/ - 确认缓存是否齐全:可运行
./gradlew --refresh-dependencies build强制刷新并补全缺失项(慎用,仅用于修复) - 团队可共享预填充的缓存目录(如通过内部 NAS 或 CI 镜像),新成员解压后即可离线构建
关闭远程检查,彻底进入离线模式
即使缓存存在,Gradle 默认仍会尝试连接远程仓库验证元数据(比如检查 POM 是否更新),这会导致离线失败或超时等待。
- 命令行方式:每次构建加
--offline参数,例如./gradlew build --offline - Android Studio 中:Settings → Build, Execution, Deployment → Gradle → 勾选 Offline work
- 全局配置(可选):在
~/.gradle/gradle.properties中添加org.gradle.offline=true,但不推荐长期启用,易掩盖依赖缺失问题
避免触发依赖解析重计算
依赖缓存再全,若每次构建都重新解析版本、冲突、传递依赖,也会拖慢速度。需稳定依赖声明:
- 禁用动态版本:把
implementation 'com.squareup.okhttp3:okhttp:4.+'改为固定版本,如4.12.0 - 启用依赖锁定(Dependency Locking):在
gradle.properties中设org.gradle.configuration-cache=true,并在build.gradle中开启enableFeaturePreview('VERSION_CATALOGS'),配合libs.versions.toml统一管理版本 - 使用
implementation替代api,缩小传递依赖范围,减少解析复杂度
配合构建缓存进一步提速
依赖缓存解决“下载”问题,构建缓存(Build Cache)解决“执行”问题。两者叠加,离线构建才真正快:
- 在
gradle.properties中启用:org.gradle.caching=true - 本地缓存自动生效;若团队有远程构建缓存(如 Gradle Enterprise),新成员首次构建也能跳过编译、测试等耗时任务
- 注意:构建缓存不替代依赖缓存——它依赖依赖已就位;两者缺一不可
不复杂但容易忽略:离线构建快不快,核心不在“怎么开”,而在于“有没有提前下全”和“会不会反复查网”。把依赖缓存当“资源仓库”,把构建缓存当“结果快照”,各司其职,才能稳又快。











