【问题标题】:Maven looking for non-existent artifactMaven 寻找不存在的工件
【发布时间】:2017-06-03 07:21:59
【问题描述】:

我有一个名为 X 的 maven 项目,它有 2 个名为的子 jar: Xa 和 Xb。当我构建 X 时,jar 包含 Xa 和 Xb。我刚刚将 X 推送到 Nexus。我还将 Xb 推送到 Nexus,因为一个单独的项目,Y 依赖于它。 我已经将新版本的 X 推送到 Nexus,X-1.2。因此,新版本的 Xb-1​​.2 也已推送到 Nexus。

在项目 Y 中,我想使用这个新版本的 Xb (Xb-1.2),所以我更新了 Y 的 pom 以反映这一点。当我构建 Y 时,我得到以下信息:

无法读取 com.Xb:Xb:jar:1.2 的工件描述符:无法读取 找到 com.X:X:pom:1.2 在 http://nexus.abc.extranet.group/nexus/content/groups/maven-123 是 缓存在本地仓库中,不会重新尝试解析 直到 abc 的更新间隔已过或强制更新 -> [帮助1]

让我感到困惑的是这一行:

找不到工件 com.X:X:pom:1.2

当我的 pom 为 Y 时,为什么 maven 试图寻找一个名为 X1.2 的 jar 并不依赖于它。诚然,X1.2 是 Xb1.2 的父项目,但 X1.2 已作为自己的工件被推送到 Nexus。 当我查看 Nexus 时,我看不到名为 X1.2 的工件。当我打开 Xb 的 pom 时,我看到它引用了它的父 X1.2 - 非常工件 maven 找不到。为什么要找 Xb 的父母?

几个月来,Project X 一直以这种方式成功构建。我遇到的问题只是当我在项目 Y 中提高 Xb 的版本时。

编辑:我在项目 X 的​​构建中发现了一个错误:

[INFO] 正在搜索本地聚合器根... [INFO] 本地聚合 root: /home/sc-jenkins/workspace/X [INFO] 处理更改 com.x:x:1.1 -> 1.2 [错误] java.io.FileNotFoundException: /home/jenkins/workspace/x/x (没有那个文件或目录)

上述目录路径中多余的 x 一定会导致问题。

【问题讨论】:

    标签: java maven nexus


    【解决方案1】:

    我发现您的问题有点令人困惑,但我会尽力回答:如果您的项目 Y 依赖于具有父 pom X 的 Xb,那么 X 也需要在那里。原因:Maven 传递地解决依赖关系,而父 pom 也可以定义(或改变)依赖关系。这意味着可能已经在父 pom 中定义了 Xb 的依赖项,Maven 需要查看一下。

    【讨论】:

    • X 也需要在那里是有道理的,但我不明白 Xb 版本的碰撞是如何导致这个问题的。我将 Xb 升级到 Xb1.2 的原因是 Ops 团队中的某个人删除了 Xb1.1。也许他们也删除了 X1.1,而 X1.2 尚未创建。
    猜你喜欢
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 2019-10-04
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多