【问题标题】:GitHub Cache with Maven project in subdirectoryGitHub 缓存与子目录中的 Maven 项目
【发布时间】:2021-01-01 08:52:07
【问题描述】:

我对一个简单的 Maven 项目的 GH Action 工作流程进行了以下配置。

name: Java CI

on:
  pull_request:
    branches:
      - master

jobs:
  tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: 11
      - name: Cache Maven repository
        uses: actions/cache@v2
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
          restore-keys: |
            ${{ runner.os }}-maven-
      - name: Verify with Maven
        run: mvn -B -e -ff clean verify

以前一切正常,直到我将 Maven 项目移动到 code 子目录中:

name: Java CI

on:
  pull_request:
    paths:
      - code/**
    branches:
      - master

jobs:
  tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: 11
      - name: Cache Maven repository
        uses: actions/cache@v2
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
          restore-keys: |
            ${{ runner.os }}-maven-
      - name: Verify with Maven
        run: mvn -B -e -ff clean verify --file code/pom.xml

现在在日志中我看到缓存步骤显示Cache not found for input keys: Linux-maven-xxxxxxx, Linux-maven-

有谁知道为什么缓存不能与子目录中的项目一起使用? 谢谢。

【问题讨论】:

  • 为什么要移动到子目录?通常 pom 文件位于项目的根目录中?...此外,您为什么对 paths: - code/**.. 做出反应?
  • 之所以将其移动到子目录中是因为根目录包含其他资源,例如(AWS)CDK、K8S 等。而且由于该工作只是运行 maven 测试,因此它以更改为条件code 文件夹。

标签: maven github github-actions


【解决方案1】:

检查以确保您没有在 settings.yaml 文件中覆盖 localRepository。 Maven 将使用默认的本地存储库~/.m2/repository,无论您将项目目录放在哪里。

作为测试,如果您当前没有覆盖默认的本地 maven repo 目录,您可以尝试更改工件的 maven 存储库路径

在作业开始之前将以下环境变量添加到您的工作流程中

  env: 
     MAVEN_OPTS: "-Dmaven.repo.local=${{ github.workspace }}/repository"

然后使用以下调用缓存操作

  - name: Cache Maven repository
    uses: actions/cache@v2
    with:
      path: "${{ github.workspace }}/repository"
      key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
      restore-keys: |
        ${{ runner.os }}-maven-

【讨论】:

    猜你喜欢
    • 2017-03-23
    • 1970-01-01
    • 2016-09-19
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多