GitHub Actions:在 Windows 环境中缓存 Maven .m2 存储库 C\:\\Users\runneradmin\\.m2\repository:无法统计:没有这样的文件或目录

Posted

技术标签:

【中文标题】GitHub Actions:在 Windows 环境中缓存 Maven .m2 存储库 C\\:\\\\Users\\runneradmin\\\\.m2\\repository:无法统计:没有这样的文件或目录【英文标题】:GitHub Actions: Cache Maven .m2 repository on Windows environment C\:\\Users\runneradmin\\.m2\repository: Cannot stat: No such file or directoryGitHub Actions:在 Windows 环境中缓存 Maven .m2 存储库 C\:\\Users\runneradmin\\.m2\repository:无法统计:没有这样的文件或目录 【发布时间】:2021-06-26 09:56:58 【问题描述】:

As the docs state 为了使用 GitHub Actions 缓存 Maven 依赖项,我们必须使用 actions/cache 操作,如下所示:

steps:
  - uses: actions/checkout@v2
  - name: Set up JDK 1.8
    uses: actions/setup-java@v1
    with:
      java-version: 1.8
  - name: Cache Maven packages
    uses: actions/cache@v2
    with:
      path: ~/.m2
      key: $ runner.os -m2-$ hashFiles('**/pom.xml') 
      restore-keys: $ runner.os -m2
  - name: Build with Maven
    run: mvn --batch-mode --update-snapshots verify

但是使用windows-2016 GitHub Actions 环境,这并没有为我们提供有效的缓存 - as the logs states:

Post job cleanup.
"C:\Program Files\Git\usr\bin\tar.exe" --posix --use-compress-program "zstd -T0" -cf cache.tzst -P -C D:/a/spring-boot-admin/spring-boot-admin --files-from manifest.txt --force-local
/usr/bin/tar: C\:\\Users\runneradmin\\.m2\repository: Cannot stat: No such file or directory
/usr/bin/tar: Exiting with failure status due to previous errors
Warning: Tar failed with error: The process 'C:\Program Files\Git\usr\bin\tar.exe' failed with exit code 2

如何解决这个问题?

【问题讨论】:

【参考方案1】:

似乎 Maven 存储库的路径未正确初始化。作为this issue describes,路径是用\\ 编写的,而不是GNU tar 所期望的/。 The fix was already provided in Dec 2020,所以它变成了版本v2.1.4。最后一个版本v2.1.3 于 11 月发布。但遗憾的是有a bug in pointing the v2 to the latest v2.1.4(正如 GitHub Actions 用户通常所期望的那样)。因此,要解决这个问题,我们需要明确指定完整的操作/缓存版本v2.1.4,如下所示:

steps:
  - uses: actions/checkout@v2
  - name: Set up JDK 1.8
    uses: actions/setup-java@v1
    with:
      java-version: 1.8
  - name: Cache Maven packages
    uses: actions/cache@v2.1.4
    with:
      path: ~/.m2
      key: $ runner.os -m2-$ hashFiles('**/pom.xml') 
      restore-keys: $ runner.os -m2
  - name: Build with Maven
    run: mvn --batch-mode --update-snapshots verify

现在它应该像魅力一样工作了 (see logs here)。

【讨论】:

以上是关于GitHub Actions:在 Windows 环境中缓存 Maven .m2 存储库 C\:\\Users\runneradmin\\.m2\repository:无法统计:没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

Windows 主机上的 GitHub Actions(powershell?):前几行的退出代码被忽略

GitHub Actions 上 Windows 环境中的测试容器:“找不到有效的 Docker 环境。请查看日志并检查配置”

GitHub Actions:在 Windows 环境中缓存 Maven .m2 存储库 C\:\\Users\runneradmin\\.m2\repository:无法统计:没有这样的文件或目录

Github Actions:在特定操作系统上运行步骤

是否可以在 GitHub Actions 中的 Actions 之间保留 WORKDIR?

在 Github Actions 上从 package.json 安装私有 github 包