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

GitHub Action中Gradle子项目缓存失败问题求助

解决GitHub Action中Gradle缓存未命中的问题

针对你单体仓库中后端Gradle缓存始终提示“gradle cache is not found”的问题,以下是几个针对性的排查和解决步骤:

1. 确认本地构建缓存配置的有效性

先检查settings.gradle.kts中的构建缓存配置是否正确启用,确保本地缓存目录路径准确:

buildCache {
    local {
        enabled = true
        directory = File(rootDir, ".gradle/cache")
        removeUnusedEntriesAfterDays = 30
    }
}

注意:本地构建缓存仅在当前Runner实例生效,GitHub Actions的Runner是临时容器,必须配合GitHub的缓存机制才能持久化缓存内容。

2. 改用Gradle官方Action处理缓存

actions/setup-java的cache-dependency-path主要针对Maven缓存,对Gradle的支持有限。推荐使用官方的gradle/gradle-build-action,它专门优化了Gradle在CI环境中的缓存逻辑,自动处理依赖、构建缓存、Wrapper等内容:

steps:
  - uses: actions/checkout@v4

  # 保留你现有的前端NPM缓存配置
  - name: Cache node modules
    uses: actions/cache@v4
    with:
      path: ~/.npm
      key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
      restore-keys: |
        ${{ runner.os }}-node-

  # 后端使用Gradle官方Action管理缓存
  - name: Setup Gradle
    uses: gradle/gradle-build-action@v3
    with:
      gradle-version: '8.x' # 替换为你的Gradle版本,或留空让Action自动识别Wrapper版本

  - name: Build backend
    run: ./gradlew build --no-daemon

3. 手动配置actions/cache适配Gradle(若坚持用setup-java)

如果不想切换到官方Gradle Action,需要明确指定所有Gradle相关的缓存路径,避免遗漏:

steps:
  - uses: actions/checkout@v4

  - name: Cache Gradle resources
    uses: actions/cache@v4
    with:
      path: |
        ~/.gradle/caches
        ~/.gradle/wrapper
        .gradle/cache # 对应你settings.gradle.kts中配置的本地缓存目录
      key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
      restore-keys: |
        ${{ runner.os }}-gradle-

  - name: Setup Java
    uses: actions/setup-java@v4
    with:
      java-version: '17' # 替换为你的Java版本
      distribution: 'temurin'
      # 此处无需再配置cache-dependency-path,已通过actions/cache覆盖

  - name: Build backend
    run: ./gradlew build --build-cache --no-daemon

注意:hashFiles要包含所有Gradle配置文件,确保缓存键能准确反映依赖或配置的变化。

4. 验证缓存状态

在GitHub Action的运行日志中,查找Cache restored successfully或Cache saved successfully的条目,确认Gradle相关路径被正确缓存。如果仍有问题,可在构建前添加调试步骤检查缓存目录:

- name: Check Gradle cache directories
  run: |
    ls -la ~/.gradle/caches
    ls -la .gradle/cache

通过输出确认缓存目录是否有内容,判断缓存是否被正确恢复。

5. 确保构建命令启用缓存

运行Gradle命令时,避免使用--no-build-cache参数,可显式添加--build-cache参数确保缓存生效:

./gradlew build --build-cache --no-daemon

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 23:12:14