Github-actions:缓存仓库以加速Maven构建

23

当我的构建工作流程被触发时,Maven 依赖项会被下载。

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

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

3
这几乎是最高票答案的副本。 - Julia

6

6

对于Maven,您现在可以使用 setup-java 来缓存依赖项。例如:

    - uses: actions/setup-java@v2.3.1
      name: Install Java
      with:
        java-version: 8
        distribution: 'adopt'
        cache: 'maven'

请注意,与其他“setup-*”相同,这些也是:nodepythonruby


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将找到未受影响的模块构件并跳过它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接