迁移到Mavent 3.0.3后,几个项目中的父poms无法再解析。
项目是以默认方式构建的,所以我设置了 parent.relativePath to“../ pom.xml”
superpom (located in repository)
|-rootpom (located locally: no error)
|-|-parentpom (located locally: error resolving parent)
|-|-|-module1 (located locally: error resolving parent)
|-|-|-module2 (located locally: error resolving parent)
|-|-|-module3 (located locally: error resolving parent)
|-|-|-module4 (located locally: error resolving parent)
错误......
myGroup的不可解析的父POM:myArtifactId:1.0:未能 找到myGroup:myParentArtifactId:1.0 in http://myRepo.net/archiva/repository/maven2被缓存在当地 存储库,重新污染将不会重新尝试,直到更新 已经过了maven2的间隔或强制更新 'parent.relativePath'指向错误的本地POM @ myGroup:myParentArtifactId:1.0,C:\ myProjectDir \ parent \ pom.xml,line x,列y - > [帮助2]
...似乎表明在存储库中搜索了pom,所以我想知道 为什么在看到其他地方之前没有找到pom。
我已经读过,当在settings.xml中定义了几个存储库时,maven3可能会感到困惑,但这总是在搜索存储库内的pom而不是本地时。
更新
到目前为止,我们确实在父项目级别(parentpom)上执行了maven构建 - 我不知道这个事实很重要,因为maven2到目前为止已成功完成。
使用maven3时,这似乎很重要。 在根项目级别(rootpom)上执行maven3时,构建成功完成。 所以我的问题就解决了。
因为我不一定想回答我自己的问题 有人可以解释为什么maven3现在这样做或为什么老了 方法是错误的。
答案 0 :(得分:34)
确保你仔细检查你在child-pom中引用的版本是否与parent-pom中的相同。对我来说,我在父版本中遇到了版本并将其作为3.1.0.0-RELEASE,但在child-pom中,我仍然通过relativePath引用以前的版本,并将其定义为2.0.0.0-SNAPSHOT。如果我只包含父目录,或者在目录中附加了“pom.xml”,则没有任何区别:
<parent>
<artifactId>eric-project-parent</artifactId>
<groupId>com.eric.common</groupId>
<!-- Should be 3.1.0.0-RELEASE -->
<version>2.0.0.0-SNAPSHOT</version>
<relativePath>
../../EricParentAsset/projects/eric-project-parent</relativePath>
</parent>
答案 1 :(得分:11)
以下是answer您的问题。
默认情况下,maven在../pom.xml
中查找relativePath
。请改用空<relativePath/>
标记。
答案 2 :(得分:6)
'parent.relativePath'指向错误的本地POM @ myGroup:myParentArtifactId:1.0, C:\ myProjectDir \ parent \ pom.xml
这表明maven确实在本地搜索父pom,但发现它不是正确的pom。
pom.xml
parentpom
parent
正确定义pom.xml
pom为rootpom
的{{1}}吗?rootpom
文件夹是否包含pom.xml
以及paretpom
文件夹?答案 3 :(得分:2)
我遇到了同样的问题。我的项目布局看起来像
\---super
\---thirdparty
+---mod1-root
| +---mod1-linux32
| \---mod1-win32
\---mod2-root
+---mod2-linux32
\---mod2-win32
在我的情况下,我在modX-root级别的pom.xmls中出错了。我复制了mod1-root树并将其命名为mod2-root。我错误地认为我已经适当地更新了所有的pom.xmls;但事实上,mod2-root / pom.xml与mod1-root / pom.xml具有相同的组和工件ID。在修改了mod2-root的pom.xml以获得mod2-root特定的maven坐标后,我的问题得到了解决。
答案 4 :(得分:1)
你需要检查你的相对路径,根据你父模块的深度,如果模块刚好在父模块之下,那么在模块中放置相对路径为: ../的pom.xml
如果它的2级则下降 ../../的pom.xml
答案 5 :(得分:0)
请检查日志是否有http.HttpWagon $ __ sisu1:找不到'basicAuthScope'这个错误或警告,如果是这样你需要使用maven 3.2.5版本,这将解决错误。
答案 6 :(得分:0)
<parent>
<groupId>com.test.vaquar.khan</groupId>
<artifactId>vk-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../projectname/pom.xml</relativePath>
</parent>
在父
中添加以下行<relativePath>../projectname/pom.xml</relativePath>
如果您使用nexsus中不可用的本地父pom构建,则需要相对路径,在nexus中添加pom然后不需要此路径
答案 7 :(得分:0)
对我来说,当我仔细检查父母的“组ID”和“工件ID”时,它会起作用,在我的情况下,这是错误的,这就是问题。