jenkins - 无法解析的父级POM,找不到该artifact,并且“parent.relativePath”指向错误的本地POM。

6
我有一个关于Jenkins构建的问题。正如标题所描述的那样,这是一个“无法解析父POM,找不到工件,'parent.relativePath'指向错误的本地POM”的问题,在stackoverflow上经常发现,但我没有找到匹配的解决方案。因此,以下是我的问题描述:
我的项目结构如下:
/root-project
 +-----------/pom.xml
/root-project/modul-a/
 +-------------------/pom.xml
/root-project/modul-b/
 +-------------------/pom.xml
/root-project/modul-c/
 +-------------------/pom.xml

在我的本地电脑(Windows)上,我可以从以下位置构建我的项目:

mvn -f root-project/pom.xml clean install

即使是一个空仓库,也没有错误。

但是Jenkins(Linux)无法做到这一点。

Gestartet durch Benutzer anonymous
Building in workspace /opt/jenkins/jobs/Project/workspace
Checkout:workspace / /opt/jenkins/jobs/Project/workspace - hudson.remoting.LocalChannel@33333ab9
Using strategy: Default
Last Built Revision: Revision acb4c7d9efd81c1c7d5bbd2f6e190d1cb0a5e359 (origin/HEAD, origin/master)
Fetching changes from 1 remote Git repository
Fetching upstream changes from http://repository.git
Seen branch in repository origin/HEAD
Seen branch in repository origin/master
Seen branch in repository origin/version_branch
Commencing build of Revision acb4c7d9efd81c1c7d5bbd2f6e190d1cb0a5e359 (origin/HEAD, origin/master)
Checking out Revision acb4c7d9efd81c1c7d5bbd2f6e190d1cb0a5e359 (origin/HEAD, origin/master)
Warning : There are multiple branch changesets here
[workspace] $ /opt/apache-maven-3.0.4/bin/mvn -f root-project/pom.xml -e clean install javadoc:aggregate
[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[ERROR] The build could not read 8 projects -> [Help 1]
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM: Could not find artifact org.example:rootartifact:pom:1.3.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 3, column 10
[FATAL] Non-resolvable parent POM: Could not find artifact org.example:rootartifact:pom:1.3.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 5, column 11
//...
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:601)
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.example:module-a:1.3.0-SNAPSHOT (/opt/jenkins/jobs/Project/workspace/root-project/module-a/pom.xml) has 1 error
[ERROR]     Non-resolvable parent POM: Could not find artifact org.example:root-project:pom:1.3.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 3, column 10 -> [Help 2]
org.apache.maven.model.resolution.UnresolvableModelException: Could not find artifact org.example:root-project:pom:1.3.0-SNAPSHOT

以下是我的父POM中包含的内容:

<?xml version="1.0" encoding="UTF-8"?>
<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.example</groupId>
<artifactId>root-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
    <module>module-a</module>
    <module>module-b</module>

一个POM模块的例子

<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>
  <parent>
    <artifactId>root-project</artifactId>
    <groupId>org.example</groupId>
    <version>1.3.0-SNAPSHOT</version>
  </parent>
  <artifactId>module-a</artifactId>
  <dependencies>
     //..
  </dependencies>
</project>

正如其他条目中提到的,我已经尝试过,但并没有改变结果。为什么呢?因为它指向存储库,而父级从未存在过。

那么,有人能建议我做错了什么吗?

如要求所示,以下是mvn help:effective-pom的输出:

[INFO] Scanning for projects...
[ERROR] The build could not read 3 projects -> [Help 1]
[ERROR]   
[ERROR]   The project org.example:modul-a:1.3.0-SNAPSHOT (/tmp/project/project-root/modul-a/pom.xml) has 1 error
[ERROR]     Non-resolvable parent POM: Could not find artifact org.example:project:pom:1.3.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 3, column 10 -> [Help 2]
[ERROR]   
[ERROR]   The project org.example:modul-b:1.3.0-SNAPSHOT (/tmp/project/project-root/modul-b/pom.xml) has 1 error
[ERROR]     Non-resolvable parent POM: Could not find artifact org.example:project:pom:1.3.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 5, column 11 -> [Help 2]
[ERROR]   
[ERROR]   The project org.example:modul-c:1.3.0-SNAPSHOT (/tmp/project/project-root/modul-c/pom.xml) has 1 error
[ERROR]     Non-resolvable parent POM: Could not find artifact org.example:project:pom:1.3.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 6, column 10 -> [Help 2]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[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
1个回答

11

你例子中模块pom文件的父级<artifactId>root-project

你父级pom文件中的<artifactId>project。在jenkins输出中,看起来artifact的名称被解析为rootproject。尝试将父级pom中的<artifactId>设置为root-project(注意多了一个'-')。

我不确定这如何在你的机器上构建。你能否发布在你的机器和运行jenkins的机器上运行mvn help:effective-pom的输出结果?

就效果而言,你可以启用-X标志以查看Maven可能正在尝试执行的操作。我发现这对于调试我的Maven项目配置非常有用。


首先,很抱歉这是我匿名化的错误。父模块的<artifactId>和模块中对<artifactId>的引用是相同的。我会进行修正,并添加help:effective-pom输出。问题大致相同,让我感到非常困扰。今天在Windows上进行全新的检出也无法构建... - Thomas
哦,你差点就成功了 - 发现了另一个来自未见提交的拼写错误...谢谢。 - Thomas

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