我将我的maven项目设置为1个shell项目和4个子模块。当我尝试构建shell时。我明白了:
[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]
如果我尝试构建一个单独的模块,我会得到相同的错误,只替换module1,无论它是什么模块。
让他们都在他们的poms中引用父母。
<parent>
<artifactId>shell</artifactId>
<groupId>converter</groupId>
<version>1.0_A0</version>
</parent>
以下是shell pom的相关部分:
<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>
答案 0 :(得分:71)
仅供参考。
Maven的乐趣。
将模块的相对路径放到../pom.xml解决了它。
parent
元素有一个relativePath
元素,您需要指向父元素的目录。默认为..
答案 1 :(得分:24)
也可以通过将正确的settings.xml
文件放入~/.m2/
目录来修复它。
答案 2 :(得分:11)
另一个原因也可能是来自存储库的父工件,它不能从pom.xml
访问,通常是私有存储库。解决方案是在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,问题变得更加复杂:存储库仅在特殊配置文件(<profiles><profile><id>activate-private-repo</id><repositories>...
)中处于活动状态,Eclipse中的Maven GUI不允许通过Ctrl+Alt+P
设置此配置文件捷径。
解决方案是临时在配置文件外部(无条件地)声明存储库,启动Alt+F5
Maven更新项目,激活配置文件并将存储库声明放回配置文件中。这是Eclipse的错误,而不是Maven bug。
答案 3 :(得分:3)
不可解析的父POM: 这意味着您无法解析父仓库。
在调试模式下运行:
[DEBUG] Reading global settings from **/usr/local/Cellar/maven/3.5.4/libexec/conf/settings.xml**
[DEBUG] **Reading user settings from /Users/username/.m2/settings.xml**
[DEBUG] Reading global toolchains from /usr/local/Cellar/maven/3.5.4/libexec/conf/toolchains.xml
[DEBUG] Reading user toolchains from /Users/username/.m2/toolchains.xml
[DEBUG] Using local repository at /Users/username/.m2/repository
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for /Users/username/.m2/repository
[INFO] Scanning for projects...
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
因为父仓库不是Maven Central的一部分。 解决方案是在〜m2 /中指定一个setting.xml,以帮助生成父POM。 /Users/username/.m2/settings.xml
在该XML中,您可能需要指定存储库信息。
答案 4 :(得分:2)
只需添加<relativePath />
,所以pom中的父项应如下所示:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath />
</parent>
答案 5 :(得分:1)
答案 6 :(得分:1)
替换1.0_A0 同 $ {project.version}
运行一次mvn。这将下载所有必需的存储库。在此步骤之后,您可以切换回1.0_A0。
答案 7 :(得分:1)
<relativePath>
如果您在子项目下进行构建,那么<relativePath>
可以帮助您解决父pom。
但是,如果您在子项目的文件夹之外构建子项目,则<relativePath>
不起作用。您可以先install
将父pom放入本地存储库,然后构建子项目。
答案 8 :(得分:0)
我的工作中遇到了类似的问题。
在没有依赖项的情况下构建父项目会在.m2文件夹中创建parent_project.pom文件。
然后在父POM中添加子模块并运行Maven构建。
<modules>
<module>module1</module>
<module>module2</module>
<module>module3</module>
<module>module4</module>
</modules>
答案 9 :(得分:0)
在
中添加依赖项pom.xml:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.3</version>
</dependency>
答案 10 :(得分:0)
经过很长时间的尝试,我解决了这个问题,我在子模块文件目录中创建了另一个名为“ parent_pom.xml”的文件,并将该文件的本地内容粘贴到了新创建的“ parent_pom.xml”。 它对我有用,错误消息消失了。
答案 11 :(得分:0)
内部相对路径标记的操作如下
<relative>{project_name}/pom.xml</relative>
然后是RunAs-> Maven构建
对我有用。
答案 12 :(得分:0)
当我从.m2文件夹中删除settings.xml
时,此问题已修复。
答案 13 :(得分:0)
我在父 pom 中有以下配置:
<properties>
<revision>1.0-SNAPSHOT</revision>
</properties>
<groupId>com.company.org</groupId>
<artifactId>api-reactor-pom</artifactId>
<version>$revision</version>
<packaging>pom</packaging>
我收到了“不可解析的父 POM”错误。我将版本更改为 <version>1.0-SNAPSHOT</version>
,它不见了。
Apache Maven 3.6.3。
答案 14 :(得分:-2)
我遇到的问题是两个reactor构建的pom.xml文件具有相同的artefactId。