Maven:不可解决的父POM

我有我的Maven项目设置为1个shell项目和4个子模块。 当我尝试构buildshell。 我得到:

[INFO] Scanning for projects... [ERROR] The build could not read 1 project -> [Help 1] [ERROR] [ERROR] The project module1:1.0_A0 (C:\module1\pom.xml) has 1 error [ERROR] Non-resolvable parent POM: Failure to find shell:pom:1.0_A0 in http://nyhub1.ny.ssmb.com:8081/nexus/content/repositories/JBoss/ was cached in the local repository, resolution will not be reattempted until the update interval of jboss has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 5, column 11 -> [Help 2] 

如果我试图build立一个单独的模块,我得到相同的错误只replacemodule1,无论它是什么模块。

让他们都参考他们的母亲的父母。

 <parent> <artifactId>shell</artifactId> <groupId>converter</groupId> <version>1.0_A0</version> </parent> 

这里是shell的相关部分:

 <groupId>converter</groupId> <artifactId>shell</artifactId> <version>1.0_A0</version> <packaging>pom</packaging> <name>shell</name> <modules> <module>module1</module> <module>module2</module> <module>module3</module> <module>module4</module> </modules> 

仅供参考。

Maven的乐趣。

把模块的相对path放到../pom.xml中解决。

parent元素有一个relativePath元素,您需要指向父级的目录。 它默认为..

也可以通过将正确的settings.xml文件放入~/.m2/目录来修复。

另一个原因也可能是父代工件来自不能从pom.xml访问的存储库,通常是私有存储库。 解决scheme是在pom.xml提供该存储库:

 <repositories> <repository> <id>internal-repo</id> <name>internal repository</name> <url>https://my/private/repo</url> <layout>default</layout> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> 

在我的情况下,由于Eclipse,问题变得更加复杂:存储库仅在特殊configuration文件( <profiles><profile><id>activate-private-repo</id><repositories>... )和Maven GUI在Eclipse中不允许通过Ctrl+Alt+P快捷键设置这个configuration文件。

解决scheme是临时声明仓库外部configuration文件(无条件),启动Alt+F5 Maven更新项目,激活configuration文件,并将资源库声明放回configuration文件。 这是Eclipse的错误,而不是Maven的错误。

validation您在子POM中是否有正确的值

 GroupId ArtefactId Version 

例如在Eclipse中,您可以search它: Eclipse:搜索父pom

用$ {project.version}replace1.0_A0

运行一次mvn。 这将下载所有必需的存储库。 此步骤后,您可以切换回1.0_A0。