Maven 项目使用多个 GitLab Package Registry

Maven project use multiple GitLab Package Registry

我正在尝试使用 GitLab Maven Package Registry 将 2 个 GitLab 项目(项目 a 和项目 b)设置为我的其他项目(项目 c)的远程 Maven 存储库。

现在我有 2 个 GitLab Maven 包注册表

所以,现在我需要在我的项目 C pom.xml 文件中设置注册表设置

我该怎么做,因为我们的 pom.xml 文件中不能有多个

<!--registry setup for project a-->
<repositories>
    <repository>
        <id>gitlab-maven</id>
        <url>https://gitlab.com/api/v4/projects/112233/packages/maven</url>
    </repository>
</repositories>

<distributionManagement>
    <repository>
        <id>gitlab-maven</id>
        <url>https://gitlab.com/api/v4/projects/112233/packages/maven</url>
    </repository>

    <snapshotRepository>
        <id>gitlab-maven</id>
        <url>https://gitlab.com/api/v4/projects/112233/packages/maven</url>
    </snapshotRepository>
</distributionManagement>

<!--registry setup for project b-->
<repositories>
    <repository>
        <id>gitlab-maven</id>
        <url>https://gitlab.com/api/v4/projects/445566/packages/maven</url>
    </repository>
</repositories>

<distributionManagement>
    <repository>
        <id>gitlab-maven</id>
        <url>https://gitlab.com/api/v4/projects/445566/packages/maven</url>
    </repository>

    <snapshotRepository>
        <id>gitlab-maven</id>
        <url>https://gitlab.com/api/v4/projects/445566/packages/maven</url>
    </snapshotRepository>
</distributionManagement>

如果项目A和B在同一组,那么你应该在项目C的pom.xml中使用group-level Maven endpoint:

<repositories>
  <repository>
    <id>gitlab-maven</id>
    <url>https://gitlab.example.com/api/v4/groups/GROUP_ID/-/packages/maven</url>
  </repository>
</repositories>

否则,我想你应该能够为每个指定一个存储库:

<repositories>
  <repository>
    <id>gitlab-maven-a</id>
    <url>https://gitlab.com/api/v4/projects/112233/packages/maven</url>
  </repository>
  <repository>
    <id>gitlab-maven-b</id>
    <url>https://gitlab.com/api/v4/projects/445566/packages/maven</url>
  </repository>
</repositories>

/!\ 无论哪种情况,都不要忘记在 settings.xml 文件中设置 Maven authentication credentials(除非您的项目具有 public 可见性)。 更喜欢使用 CI_JOB_TOKEN.