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

时间:2018-09-16 19:05:22

标签: java maven gitlab egit

我在GitLab中有一个私有存储库(它在一个组中,并且具有开发人员角色),我想将其添加为我的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中看到了有关个人访问令牌的信息,但是我不确定如何设置(我假设我只需要只读访问权限?)。

2 个答案:

答案 0 :(得分:8)

首先,有一些先决条件。既然您提到您正在使用私有存储库,则至少需要有GitLab Silver(托管在gitlab.com上)或GitLab Premium(托管),才能使用GitLab Maven Packages repository。另外,如果您是自我托管的,则需要使用GitLab 11.3或更高版本(下周这个时间应该出门),并将packages_enabled设置为true(请参阅{{3} }。

对于私人项目,您需要一个Enabling the Packages repository。该令牌应具有api范围,Maven才能将工件上传到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>

pom.xml中有椭圆的地方,您需要填写项目ID。要找到ID,只需在GitLab上访问项目的首页即可。它显示在页面顶部附近,紧随项目的名称和描述之后。例如,看一下Personal Access Token示例项目。它的项目ID是8377576。该URL中包含。

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

mvn-example显示了一个完整的示例。

完成所有设置后,您应该可以使用mvn deploy上传工件。

答案 1 :(得分:1)

首先,您应该转到您的项目“包和注册表”,它位于 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>

然后转到 Gitlab 的用户 inreface 并从那里复制您的项目 ID。见截图:project 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>

用于在您的 ide 中上传工件打开终端并粘贴以下命令:

mvn deploy -s settings.xml

然后在 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>

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