Maven 无法使用 gitlab 解决依赖关系

Posted

技术标签:

【中文标题】Maven 无法使用 gitlab 解决依赖关系【英文标题】:Maven Could not resolve dependency using gitlab 【发布时间】:2021-08-27 16:07:24 【问题描述】:

我需要使用 maven 解决依赖关系但是它给出了一个错误。我正在使用 GitLab 将工件存储在包注册表下。

下面是 POM.XML 文件

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

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

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

当我在 maven 命令下运行时,出现以下错误:

mvn dependency:get -Dartifact=com.xyz:common:1.0.0.0

以下是错误:

[INFO] --- maven-dependency-plugin:3.1.2:get (default-cli) @ sweta-test ---
[INFO] Resolving com.xyz:common:jar:1.0.0.0 with transitive dependencies
Downloading from gitlab-maven: https://code.xyz.com/api/v4/projects/17/packages/maven/com/xyz/common/1.0.0.0/common-1.0.0.0.pom
Downloading from central: https://repo.maven.apache.org/maven2/com/xyz/common/1.0.0.0/common-1.0.0.0.pom
[WARNING] The POM for com.xyz:common:jar:1.0.0.0 is missing, no dependency information available
Downloading from gitlab-maven: https://code.xyz.com/api/v4/projects/17/packages/maven/com/xyz/common/1.0.0.0/common-1.0.0.0.jar
Downloading from central: https://repo.maven.apache.org/maven2/com/xyz/common/1.0.0.0/common-1.0.0.0.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  6.136 s
[INFO] Finished at: 2021-06-10T21:10:20+05:30
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:3.1.2:get (default-cli) on project sweta-test: Couldn't download artifact: org.eclipse.aether.resolution.DependencyResolutionException: Could not find artifact com.xyz:common:jar:1.0.0.0 in gitlab-maven (https://code.xyz.com/api/v4/projects/17/packages/maven) -> [Help 1]

有人可以帮我补上缺失的部分吗?

【问题讨论】:

Maven 是否已通过身份验证以从 GitLab 获取工件? docs.gitlab.com/ee/user/packages/maven_repository/… 它可能是一个私有存储库吗? @thinkgruen 感谢您抽出宝贵时间。我错过了对 Maven 进行身份验证以从 GitLab 获取工件。它现在正在工作!再次感谢!我很想知道存储库标签和分发管理标签之间的区别。另外,您如何确定这是一个 Maven 身份验证问题? @Sweta Sharma 我更像是一个 Gradle 用户,但我相信存储库是用来阅读的(所以要构建你的依赖项),分发管理负责部署你自己的工件。至于我是如何识别它的:在使用存储库时,这种事情总是会发生。根据我的经验,资源确实不存在(例如拼写错误),或者资源没有 DNS 条目(内部网络),或者身份验证失败。我认为前两个在这里不太可能。如果你愿意,我可以再次发布我的初始消息作为答案,而不是评论。 @thinkgruen 感谢您分享您的知识。是的,请添加它作为答案!再次感谢! 【参考方案1】:

在这种情况下,找不到依赖项,因为 maven 客户端未使用 gitlab-repository 进行身份验证。要解决这个问题,需要follow these steps。出于安全原因,建议不要将任何令牌推送到(公共)托管存储库,而是可以使用环境变量。快速教程可以found here。

根据我的经验Could not find artifact 还可能有其他一些原因。所有这些点都应该或多或少地适用于 gradle(或任何正在拉动工件/容器的东西,例如 docker)

    工件确实不存在,可能拼写错误或存储库中根本不存在所需的版本。 网络端有安全措施阻止您访问工件。可能是防火墙或 DNS 查找失败(可能是 hosts 文件中缺少条目)。

【讨论】:

以上是关于Maven 无法使用 gitlab 解决依赖关系的主要内容,如果未能解决你的问题,请参考以下文章

MAVEN 无法解决依赖关系 [重复]

Maven 无法解决依赖关系

Apache IVY 无法解析 MAVEN 项目的依赖关系

Maven 无法解析项目的依赖关系

android 创建Model 解决无法依赖传递问题 , 实现 sdk 依赖关系的传递

android 创建Model 解决无法依赖传递问题 , 实现 sdk 依赖关系的传递