Build Hudson构建失败:不可解析的父POM

Build Hudson构建失败:不可解析的父POM,build,maven,hudson,parent,pom.xml,Build,Maven,Hudson,Parent,Pom.xml,我以前和哈德逊一起做我的项目,最近我不得不把它转移到一个新的服务器上 我以与以前完全相同的方式对其进行了配置(据我所知),但当我尝试启动构建时,它失败了,并出现以下错误: Démarré par l'utilisateur anonymous Checking out http://[...]/trunk/MyProject/ear A .classpath A .project A target AU target/ear-1.0-

我以前和哈德逊一起做我的项目,最近我不得不把它转移到一个新的服务器上

我以与以前完全相同的方式对其进行了配置(据我所知),但当我尝试启动构建时,它失败了,并出现以下错误:

Démarré par l'utilisateur anonymous
Checking out http://[...]/trunk/MyProject/ear
A         .classpath
A         .project
A         target
AU        target/ear-1.0-SNAPSHOT.ear
A         target/application.xml
A         target/ear-1.0-SNAPSHOT
A         target/ear-1.0-SNAPSHOT/META-INF
A         target/ear-1.0-SNAPSHOT/META-INF/application.xml
AU        target/ear-1.0-SNAPSHOT/web-1.0-SNAPSHOT.war
AU        target/ear-1.0-SNAPSHOT/business-1.0-SNAPSHOT.jar
A         pom.xml
A         .settings
A         .settings/org.eclipse.jdt.core.prefs
A         .settings/org.maven.ide.eclipse.prefs
At revision 136
no change for http://[...]/trunk/MyProject/ear since the previous build
Found mavenVersion 3.0.2 from file jar:file:/usr/share/maven/apache-maven-3.0.2/lib/maven-core-3.0.2.jar!/META-INF/maven/org.apache.maven/maven-core/pom.properties
Parsing POMs
ERROR: Echec à la lecture des POMs
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM: Could not find artifact com.rha:MyProject:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 9, column 10

    at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:325)
    at hudson.maven.MavenEmbedder.buildProjects(MavenEmbedder.java:360)
    at hudson.maven.MavenEmbedder.readProjects(MavenEmbedder.java:330)
    at hudson.maven.MavenModuleSetBuild$PomParser.invoke(MavenModuleSetBuild.java:1148)
    at hudson.maven.MavenModuleSetBuild$PomParser.invoke(MavenModuleSetBuild.java:991)
    at hudson.FilePath.act(FilePath.java:756)
    at hudson.FilePath.act(FilePath.java:738)
    at hudson.maven.MavenModuleSetBuild$RunnerImpl.parsePoms(MavenModuleSetBuild.java:698)
    at hudson.maven.MavenModuleSetBuild$RunnerImpl.doRun(MavenModuleSetBuild.java:531)
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:420)
    at hudson.model.Run.run(Run.java:1362)
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:405)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:145)
Finished: FAILURE
当我到达Hudson“workspace”时,pom.xml文件如下所示:

<relativePath>../pom.xml</relativePath>
[……]

发生的情况是:

在我的Hudson作业配置中,我在SVN字段“repository URL”中填写了:

http://[…]/trunk/MyProject/ear

下面是“MyProject”文件夹中的“pom.xml”:



从Maven REPO中检索根POM通常也会起作用(和您一样),但我希望您到目前为止还没有触发将根POM安装到新hudson站点上的REPO中

要避免这种情况,请使用relativePath属性,例如:

<relativePath>../pom.xml</relativePath>
。/pom.xml
在您的
标记中,该标记将告诉maven在模块结构中查找根pom。

相对路径(属于
父级
)默认为
。/pom.xml
。看起来里面没有。您可以将其设置为空值,以便maven将其作为依赖项下载

 <relativePath/> 

讨论这一点

[编辑:基于对问题的编辑]

Hudson只看到ear文件夹中的源代码。虽然SVN中存在父pom,但Hudson无法使用它。在Maven 2中,缺少父pom是aa警告,但在Maven 3中是aa警告

有两种方法可以解决这个问题

一个是向hudson指定url
http://[…]/trunk/MyProject/
。然后,您可以选择构建所有模块,或者仍然选择单独构建ear项目的
pom.xml


另一种是在hudson系统上手动运行
mvn install
,以便父pom部署一次,然后由hudson使用。但是,如果随后更改了父pom,则不会更新此项。

当Hudson尝试运行Sonar:Sonar时,我对Hudson、Sonar插件和多模块Maven项目有相同的问题:“不可解析的父pom”。解决方案是在“声纳”部分下的哈德逊作业配置中指定根POM位置

SVN中的项目结构(每个项目都是一个Maven项目,项目根目录中有pom.xml):

我对每个项目都有单独的Hudson作业,“foo父项”、“foo ui模块”和“bar other模块”。在哈德逊作业中运行的声纳无法找到父POM,即使在此之前构建成功。可能Sonar插件没有使用与作业其余部分相同的Maven设置,因为它没有尝试从我们的工件库中查找父POM,甚至没有在项目POM中使用


根POM设置的位置在作业的Configure->Sonar->Advanced->Root POM:
。/foo parent/POM.xml
(我在这个路径上有foo parent作业)

我们只需删除相关的POM文件,以及同一文件夹中具有类似名称的某种元数据文件,就可以实现这一点,从jenkins服务器上的
.m2/repository/a/b/c
文件夹

执行此操作后重新运行jenkins构建工作正常


希望这对某人有所帮助…

那么您只有一个pom文件吗?如果有对父pom文件的引用,则应该有两个。对吗?也不要检查svn中的目标目录。@Amir Raminfar:请参见我的编辑=)我尝试过,但仍然出现错误:
[FATAL]不可解析的父POM:找不到工件com.rha:MyProject:POM:1.0-SNAPSHOT和'parent.relativePath'指向错误的本地POM@第9行,第10列
如错误消息所示:relativePath属性设置为错误路径,例如,如果您的pom位于/home/test/project/moduleA中,并且您的根pom位于/home/test/project/中,那么您可以添加上面提到的“./pom.xml”。非常感谢您的回答!我将URL更改为`http://[…]/trunk/MyProject/`这样现在我可以看到3个模块。我转到“ear”模块,将Maven目标配置为
清理包货物:重新部署-P集成
,但在尝试构建时,我得到了以下结果:
[…]通道启动完成:中止
。它基本上不构建任何东西=/I最终选择了
mvn安装方法。它确实可以工作,但我不喜欢父pom.xml无法更新的事实。。。无论如何,非常感谢!解决父pom.xml更新问题的一个方法是使用一个jenkins maven作业,该作业只需安装它,并像任何其他作业一样被触发。如果父pom被更新,那么所有相关作业都将重建,这是一个额外的好处。这个答案为我节省了大量时间。只是在Spring的实例中遇到了类似的问题。我将它们复制到我的Eclipse工作区,但没有注意到它们上面文件夹中的父POM。谢谢您的回答,它解释了发生的事情。我们的解决方案是从jenkins server.m2存储库中删除一些文件(参见单独的答案)。
<?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 

[...]
    <modules>
        <module>business</module>
        <module>web</module>
        <module>ear</module>
    </modules>
[...]
<relativePath>../pom.xml</relativePath>
 <relativePath/> 
foo-parent
  +- foo-ui-module
  +- bar-other-module