将GitLab私有存储库添加为Maven依赖项

Pri*_*riv 5 java maven egit gitlab

我在GitLab中有一个私有存储库(它在一个组中,我有一个Developer角色),我想将其添加为我的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>
Run Code Online (Sandbox Code Playgroud)

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

Kin*_*ang 8

首先,一些先决条件.由于您提到您正在使用私有存储库,因此您需要至少使用GitLab Silver(在gitlab.com上托管)或GitLab Premium(自托管)才能使用GitLab Maven Packages存储库.此外,如果您是自托管的,则需要使用GitLab 11.3或更高版本(下周应该在这个时间外),并且packages_enabled设置为true(请参阅启用软件包存储库).

对于私人项目,您需要一个个人访问令牌.令牌应具有apiMaven 的范围,以将工件上载到GitLab.获得令牌后,您可以配置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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

MVN,例如项目的pom.xml文件显示了一个完成的示例.

完成所有设置后,您应该能够上传工件mvn deploy.

  • Gitlab 已将私有 Maven 存储库功能从 EE 移至 Core。https://gitlab.com/gitlab-org/gitlab/-/issues/221259#proposal (3认同)

Vah*_*yan 8

首先,你应该转到你的项目“包和注册表”,它位于 Gitlab 用户界面的左侧菜单上,找到包注册表按钮(如果你看不到它,只需询问你的系统管理员),然后离开该选项卡打开并等待未来的指示。请注意,如果您在拥有 Gitlab 域的公司工作,那么在我写“https://gitlab.com”的地方,您应该写您公司的 gitlab 域。之后,您应该通过转到“https://gitlab.com/profile”->“访问令牌”来生成“私有令牌”,然后选择 api 复选框并为您的令牌命名,例如“测试令牌”和然后按生成。之后,在您的 java 项目中,在 pom.xml 附近创建文件“settings.xml”,然后粘贴下面的代码段,并在其中写入您刚刚生成的令牌。上传和安装工件都需要此 settings.xml。

 <settings>
  <servers>
    <server>
      <id>gitlab-maven</id>
      <configuration>
        <httpHeaders>
          <property>
            <name>Private-Token</name>
            <value>your token</value>
          </property>
        </httpHeaders>
      </configuration>
    </server>
  </servers>
</settings>
Run Code Online (Sandbox Code Playgroud)

之后,转到 Gitlab 的用户 inreface 并从那里复制您的项目的 id。看截图:项目编号 之后,将以下代码粘贴到您的 pom.xml 中。这必须在应上传到 Gitlab 的“包注册表”中的项目中完成

<distributionManagement>
    <repository>
        <id>gitlab-maven</id>
        <url>https://gitlab.com/api/v4/projects/project_id/packages/maven</url>
    </repository>
    <snapshotRepository>
        <id>gitlab-maven</id>
        <url>https://gitlab.com/api/v4/projects/project_id/packages/maven</url>
    </snapshotRepository>
</distributionManagement>
Run Code Online (Sandbox Code Playgroud)

要上传工件,请在 ide 中打开终端并粘贴以下命令:

mvn deploy -s settings.xml
Run Code Online (Sandbox Code Playgroud)

之后,转到 Gitlab 用户界面中项目的“包注册表”并查看上传的工件。

安装 settings.xml 还需要,并将以下代码粘贴到您的 pom.xml 中

<repositories>
    <repository>
        <id>gitlab-maven</id>
        <url>https://gitlab.com/api/v4/projects/project_id/packages/maven</url>
    </repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)

在你的终端调用中:mvn install -s settings.xml或者mvn dependency:get -Dartifact={groupId}:{artifactId}:{version} 如果安装时出现错误,不用担心,进入本地计算机的 .m2 文件夹,找到包含新创建的工件(jar)的文件夹,将其删除,然后去调用相同的再次终端命令。