我对一个简单的Maven项目的GH操作工作流进行了以下配置。
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-。
有人知道为什么缓存不能与子目录中的项目一起工作吗?谢谢。
发布于 2020-09-15 12:03:38
检查以确保您没有覆盖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-https://stackoverflow.com/questions/63887592
复制相似问题