Maven正在寻找不存在的神器

时间:2017-06-03 07:21:59

标签: java maven nexus

我有一个名为X的maven项目有2个子罐子叫: 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 in   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必须导致问题。

1 个答案:

答案 0 :(得分:0)

我发现你的问题有点令人困惑,但我尽量回答:如果你的项目Y依赖于有父pom X的Xb,那么X也需要在那里。原因:Maven传递性地解析依赖关系,父poms也可以定义(或改变)依赖关系。这意味着可以在父pom中定义Xb的依赖关系,Maven需要查看。