3

我有两个包含 Java Maven 项目的存储库:

  • 一个包含具有核心功能的项目,仅依赖于其中的其他项目或依赖于公共库
  • 一个包含依赖于第一个存储库中某些项目的项目

我已经设置了一个 Github Action 来使用 maven on pull 编译每个存储库。首先,这没有问题。对于第二个,这不起作用,因为在构建第二个存储库时,第一个存储库的项目在环境中不可用于 maven。

我有两个想法来解决这个问题

  • 在第二个存储库中创建一个子模块以包含第一个
  • 另外检查第一个版本中的第一个存储库

两种解决方案都可能有效,但最终需要所有构建时间来额外构建第一个存储库。

这是 Github 操作(目前在两个存储库中相同):

name: Java CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - name: Set up JDK 1.8
      uses: actions/setup-java@v1
      with:
        java-version: 1.8
    - name: Build with Maven
      run: mvn package --file pom.xml

有没有办法在第二个存储库中使用第一个存储库的构建而不再次构建它?

我想这不是一个独特的问题,必须有一个最佳实践解决方案。

4

1 回答 1

2

有没有办法在第二个存储库中使用第一个存储库的构建而不再次构建它?

我认为没有任何此类功能可以在不同存储库中的工作流之间共享构建输出。在我看来,最好的做法是从第一个项目中发布一个版本化的工件,第二个项目依赖它并且可以从 Maven 存储库中获取。

也许您不想将工件发布到公共 Maven 存储库,并且您可能无权访问私有存储库。在这种情况下,您可以使用 GitHub 包注册表。它现在处于测试阶段,因此如果您还没有访问权限,则需要注册。这将允许您创建一个私有 Maven 存储库来共享版本化的工件。

https://github.com/features/package-registry

于 2019-09-13T08:45:54.973 回答