【发布时间】: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 一定会导致问题。
【问题讨论】: