java - 添加 GitLab 私有(private)仓库作为 Maven 依赖

标签 java maven gitlab egit

我在 GitLab 中有一个私有(private)存储库(它在一个组中,并且我有开发人员角色),我想将其添加为我的 Maven 项目的依赖项。

我一直在寻找一段时间,我发现我必须将以下内容添加到我的 pom.xml 中:

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

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

但是,我不知道如何添加依赖项本身(使用 groupId 和其他东西),我不确定如何进行身份验证以允许 Maven 下载项目。我在 GitLab 中看到了有关个人访问 token 的内容,但我不确定如何设置它(我假设我只需要只读访问权限?)。

最佳答案

首先,一些先决条件。由于您提到您使用的是私有(private)存储库,因此您至少需要拥有 GitLab Silver(托管在 gitlab.com 上)或 GitLab Premium(自托管)才能使用 GitLab Maven Packages repository .此外,如果您是自托管的,则需要使用 GitLab 11.3。或更晚(应该在下周这个时候发布),并将 packages_enabled 设置为 true(参见 Enabling the Packages repository)。

对于私有(private)项目,您需要一个 Personal Access Token .该 token 应具有 api 范围,以便 Maven 将 Artifact 上传到 GitLab。获得 token 后,您可以像这样配置 settings.xml

<settings>
  <servers>
    <server>
      <id>gitlab-maven</id>
      <configuration>
        <httpHeaders>
          <property>
            <name>Private-Token</name>
            <value>REPLACE_WITH_YOUR_PERSONAL_ACCESS_TOKEN</value>
          </property>
        </httpHeaders>
      </configuration>
    </server>
  </servers>
</settings>

pom.xml中,有省略号的地方,需要填写你的项目ID。要查找 ID,只需访问您在 GitLab 上的项目的首页。它显示在页面顶部附近,就在您的项目名称和描述之后。例如,看看 mvn-example示例项目。它的项目 ID 是 8377576。它在 URL 中。

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

mvn-example project's pom.xml file显示了一个完整的示例。

完成所有设置后,您应该能够使用 mvn deploy 上传 Artifact 。

关于java - 添加 GitLab 私有(private)仓库作为 Maven 依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52357496/

相关文章:

java - ZK zul 迭代 enummap 以填充网格

java - 如何扩展单例类以处理特定数量的对象

maven-replacer-plugin 用于替换构建中的 token 而不是源代码

java - Git 是离开 WIP 分支并开始在另一个分支上工作的更好方法

gitlab - 错误未授权 : HTTP Basic: Access denied on docker push registry. gitlab.com

gitlab - gitlab 如何决定使用哪个 runner 来完成工作

java - Spring用单线程池并发处理多个队列

java - java 集合的不可修改包装器是否使它们成为线程安全的?

java - 有没有满足mavens发布插件的项目布局?

java - ClassNotFoundException : org. springframework.boot.autoconfigure.security.oauth2.resource.OAuth2ResourceServerConfiguration