无法解析父POM,因为找不到构件,而“parent.relativePath”指向错误的本地POM。

33

我刚开始接触Maven。

我有一个项目,想用Maven3构建它。

当我运行命令mvn -X clean install时,出现了错误。

[root@localhost]# mvn -X clean install
Apache Maven 3.0.4 (r1232337; 2012-01-17 14:14:56+0530)
Maven home: /usr/local/maven
Java version: 1.6.0_24, vendor: Sun Microsystems Inc.
Java home: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-279.9.1.el6.x86_64", arch: "amd64", family: "unix"
[INFO] Error stacktraces are turned on.
[DEBUG] Reading global settings from /usr/local/maven/conf/settings.xml
[DEBUG] Reading user settings from /root/.m2/settings.xml
[DEBUG] Using local repository at /root/.m2/repository
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for /root/.m2/repository
[INFO] Scanning for projects...
[DEBUG] Could not find metadata com.test.ctrl:ctrl-build:0.0.17-SNAPSHOT/maven-metadata.xml in local (/root/.m2/repository)
[ERROR] The build could not read 1 project -> [Help 1]
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM for org.openstack:openstack-rhel-rpms:2012.1-SNAPSHOT: Could not find artifact com.test.ctrl:ctrl-build:pom:0.0.17-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ org.openstack:openstack-rhel-rpms:2012.1-SNAPSHOT, /root/test/devenv/openstack-rhel/pom.xml, line 8, column 13

        at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:363)
        at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:636)
        at org.apache.maven.DefaultMaven.getProjectsForMavenReactor(DefaultMaven.java:585)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:234)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
[ERROR]
[ERROR]   The project org.openstack:my-tar:2012.1-SNAPSHOT (/root/test/devenv/mytar/pom.xml) has 1 error
[ERROR]     Non-resolvable parent POM for org.openstack:openstack-rhel-rpms:2012.1-SNAPSHOT: Could not find artifact com.test.ctrl:ctrl-build:pom:0.0.17-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ org.openstack:openstack-rhel-rpms:2012.1-SNAPSHOT, /root/test/devenv/openstack-rhel/pom.xml, line 8, column 13 -> [Help 2]
org.apache.maven.model.resolution.UnresolvableModelException: Could not find artifact com.test.ctrl:ctrl-build:pom:0.0.17-SNAPSHOT
        at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:159)
        at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:813)
        at org.apache.maven.model.building.DefaultModelBuilder.readParent(DefaultModelBuilder.java:664)
        at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:310)
        at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:232)
        at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:410)
        at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:379)
        at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:343)
        at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:636)
        at org.apache.maven.DefaultMaven.getProjectsForMavenReactor(DefaultMaven.java:585)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:234)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.sonatype.aether.resolution.ArtifactResolutionException: Could not find artifact com.test.ctrl:ctrl-build:pom:0.0.17-SNAPSHOT
        at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:538)
        at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:216)
        at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:193)
        at org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:286)
        at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:155)
        ... 22 more
Caused by: org.sonatype.aether.transfer.ArtifactNotFoundException: Could not find artifact com.test.ctrl:ctrl-build:pom:0.0.17-SNAPSHOT
        at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:528)
        ... 26 more
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException

我查看了pom.xml文件,但无法理解问题所在。 以下是pom.xml文件的一些行:

  1 <?xml version="1.0"?>
  2 <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
  3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  4   <modelVersion>4.0.0</modelVersion>
  5
  6 <parent>
  7     <groupId>org.openstack</groupId>
  8     <artifactId>openstack-rhel-rpms</artifactId>
  9     <version>2012.1-SNAPSHOT</version>
 10     <relativePath>../openstack-rhel</relativePath>
 11 </parent>
 12
 13     <groupId>org.openstack</groupId>
 14     <artifactId>my-tar</artifactId>
 15     <version>2012.1-SNAPSHOT</version>
 16   <packaging>pom</packaging>
 17   <name>my tar</name>
 18

我还在StackOverflow上查看了一些类似“Non-resolvable parent POM: Could not find artifact”的问题,但是无法解决这个问题。

如果您需要与此问题相关的更多信息,请告诉我。

11个回答

25

我遇到了同样的问题。在模块项目中设置父级相对路径解决了该问题。

使用 <relativePath>../Parent Project Name/pom.xml</relativePath>


这是我的问题的解决方案,而不是其他答案。 - Ashkan

8

您需要拥有文件 /root/test/devenv/openstack-rhel/pom.xml

该文件需要具备以下元素:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.openstack</groupId>
    <artifactId>openstack-rhel-rpms</artifactId>
    <version>2012.1-SNAPSHOT</version>
    <packaging>pom</packaging>
</project>

4
不要使用(半)随机内容开始创建文件。这里的主要问题是Maven需要解析父POM。这必须从远程存储库(请检查您的/.m2/settings.xml)或本地存储库(位于/.m2/repository或相对于当前项目目录指定的位置,并由<relativePath/>标记值指定,默认为“..”)中进行。 - Alex

3

请确保您拥有settings.xml文件。我曾经因为误删该文件而遇到相同的问题。

注:Original Answer翻译成“最初的回答”


3

我在使用Maven Release插件时遇到了这样的问题。使用相对路径解析(即在子模块中的父pom ../parent/pom.xml)似乎在这种情况下无效,它仍然会在Nexus存储库中寻找已发布的父pom。将父pom移动到模块的父文件夹中解决了这个问题。


快速解决方案: - SomMS

2
在项目的pom.xml文件中,Original Answer翻译成"最初的回答"。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>X.X.X.RELEASE</version>
<relativePath> ../PROJECTNAME/pom.xml</relativePath>
</parent>

将相对路径指向同一个MAVEN项目的POM文件,解决了我的问题。"原始答案"

2
在我的情况下,原因是一个简单的拼写错误。最初的回答。
<parent>
    <groupId>org.sringframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.5.RELEASE</version>
</parent>
<最初的回答> groupId 中缺少一个字符 "p" 导致了这个错误。

2

你提到了/root/.m2/settings.xml,但在我的情况下,我错过了在Maven首选项中配置settings.xml文件。enter image description here因此,Maven将从settings.xml中配置的remote_repository中搜索相对路径pom.xml。


1

给出pom.xml文件的相对路径URL值
../parentfoldername/pom.xml


1
我们遇到了同样的问题。
父级pom文件已经在我们的本地仓库中,但是maven仍然无法成功从中央仓库或relativePath(相对路径中没有文件)下载它。
结果发现,本地仓库中有一个名为"_remote.repositories"的文件,导致了这种行为。在完整的本地仓库中删除所有具有此名称的文件后,我们可以构建我们的模块。

1
在我的情况下,我需要进入maven的配置文件并输入代理配置信息,然后从命令行中运行mvn verify。不知何故,当尝试下载依赖项时,eclipse仍会给出相同的超时错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接