Gradle缓存简述
大约 3 分钟约 755 字
Gradle 缓存机制
缓存的分层结构
Gradle 构建过程中存在多层缓存机制,从上到下依次为:
| 缓存层级 | 名称 | 存储位置 | 作用 | 清理方式 |
|---|---|---|---|---|
| 第1层 | Configuration Cache | $PROJECT_ROOT/.gradle/configuration-cache | 缓存项目配置阶段结果 | ./gradlew clean 或 rm -rf .gradle/ |
| 第2层 | Build Cache | $GRADLE_USER_HOME/caches/build-cache-1 | 缓存任务输出 | rm -rf ~/.gradle/caches/build-cache-1 |
| 第3层 | Dependency Cache | $GRADLE_USER_HOME/caches/modules-2 | 缓存依赖下载 | ./gradlew cleanDependencies 或 rm -rf ~/.gradle/caches/modules-2 |
缓存存储位置
Configuration Cache
# 项目级别缓存(推荐查看)
$PROJECT_ROOT/.gradle/configuration-cache/
# 示例
/Users/aikero/project/.gradle/configuration-cache/Build Cache 和 Dependency Cache
# 用户级别缓存(全局)
$GRADLE_USER_HOME/caches/
# 默认位置
~/.gradle/caches/
# 示例
/Users/aikero/.gradle/caches/常见命令对缓存的影响
| 命令 | Configuration Cache | Build Cache | Dependency Cache | 说明 |
|---|---|---|---|---|
./gradlew build | ✅ 使用 | ✅ 使用 | ✅ 使用 | 正常构建,充分利用缓存 |
./gradlew clean | ❌ 清理 | ✅ 保留 | ✅ 保留 | 清理项目构建产物和配置缓存 |
./gradlew clean build | ❌ 清理 | ✅ 保留 | ✅ 保留 | 先清理再构建,重新生成所有产物 |
./gradlew cleanDependencies | ✅ 保留 | ✅ 保留 | ❌ 清理 | 清理依赖缓存,下次构建会重新下载依赖 |
./gradlew --no-build-cache build | ✅ 使用 | ❌ 禁用 | ✅ 使用 | 禁用 Build Cache,但保留 Configuration Cache |
./gradlew --no-configuration-cache build | ❌ 禁用 | ✅ 使用 | ✅ 使用 | 禁用 Configuration Cache,但保留 Build Cache |
缓存清理的行为和效果
场景 1: 清理项目构建产物
./gradlew clean效果:
- ✅ 删除
build/目录 - ✅ 清理 Configuration Cache (
.gradle/configuration-cache/) - ❌ 不影响全局 Build Cache 和 Dependency Cache
- ⏱️ 下次构建需要重新配置项目,但依赖下载会使用缓存
场景 2: 完全重新构建
./gradlew clean build效果:
- ✅ 删除所有构建产物
- ✅ 清理 Configuration Cache
- ✅ 重新执行所有任务
- ⏱️ 构建时间较长,但会生成最新的产物
场景 3: 清理全局缓存
# 清理所有 Gradle 缓存(包括 Build Cache 和 Dependency Cache)
rm -rf ~/.gradle/caches/
# 仅清理项目级别缓存
rm -rf .gradle/效果:
- ✅ 删除全局 Build Cache 和 Dependency Cache
- ⏱️ 下次构建会重新下载依赖,速度会明显变慢
- ⚠️ 谨慎使用,通常不需要这样做
场景 4: 禁用缓存进行调试
# 禁用 Build Cache,但保留 Configuration Cache
./gradlew --no-build-cache build
# 禁用 Configuration Cache,但保留 Build Cache
./gradlew --no-configuration-cache build
# 禁用所有缓存
./gradlew --no-build-cache --no-configuration-cache build效果:
- ✅ 强制重新执行相应的任务
- ✅ 用于调试或验证构建结果的一致性
快速参考
# 查看 Configuration Cache 状态
ls -la .gradle/configuration-cache/
# 查看 Gradle 缓存大小
du -sh ~/.gradle/caches/
# 清理所有缓存(包括依赖)
rm -rf ~/.gradle/caches/
# 清理项目级别缓存
rm -rf .gradle/
# 查看缓存命中情况
./gradlew build --info | grep -i "cache"提示
对于大多数日常开发,使用 ./gradlew clean build 就足够了。只有在遇到缓存相关问题时,才需要清理缓存。以上不能解决所有问题,详细查看官方文档
