GitHub Actions:缓存存储库以加速 Maven 构建

问题描述 投票:0回答:7

每次触发我的构建工作流程时都会下载 Maven 依赖项。

Travis CI 提供了一种缓存 Maven 存储库的方法。 GitHub Actions 是否提供类似的功能来允许缓存 Maven 存储库?

maven-3 github-actions
7个回答
35
投票

为了完整起见,这是如何在后续构建中缓存本地 Maven 存储库的示例:

steps:
  # Typical Java workflow steps
  - uses: actions/checkout@v1
  - name: Set up JDK 11
    uses: actions/setup-java@v1
    with:
      java-version: 11
  # Step that does that actual cache save and restore
  - uses: actions/cache@v1
    with:
      path: ~/.m2/repository
      key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
      restore-keys: |
        ${{ runner.os }}-maven-
  # Step that runs the tests
  - name: Run tests
    run: mvn test

请参阅此页了解更多详情。


9
投票

截至 2021 年,最新的官方答案是

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

取自官方 github 示例:https://github.com/actions/cache/blob/master/examples.md#java---maven


8
投票

对于 Maven,您现在可以使用

setup-java
来缓存依赖项。示例:

    - uses: actions/[email protected]
      name: Install Java
      with:
        java-version: 8
        distribution: 'adopt'
        cache: 'maven'

请注意,与其他

setup-*
相同:
node
python
ruby


6
投票

显然,截至 2019 年 9 月 10 日,Github Actions 中不存在构建依赖项的缓存。 Github 工作人员承认此功能是必要的,并回复说“我们正在努力在工作流程执行之间缓存包和工件,我们将在 [2019]11 月中旬之前完成。”

来源:https://github.community/t5/GitHub-Actions/Caching-files- Between-GitHub-Action-executions/m-p/30974/highlight/true#M630



2
投票

我开始使用skjolber的Maven Cache Github Action,参见https://github.com/marketplace/actions/maven-cache。我的第一次测试非常积极。第一个构建从 Maven Central 下载依赖项;后续构建在缓存中找到了依赖项。


0
投票

对于多模块项目,可以通过使用 https://github.com/avodonosov/hashver-maven-plugin/

仅构建受最近更改影响的模块来加速构建

如果可以缓存本地 Maven 存储库,这将起作用,如@Rob van der Leek 的答案中所述。

mvn install
每次构建后的项目工件,在下一次构建时,hashver-maven-plugin 将找到未受影响模块的工件并跳过它们。

© www.soinside.com 2019 - 2024. All rights reserved.