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

Nic*_*las 8 hudson build parent pom.xml maven

我曾经和Hudson合作过我的项目,最近我不得不把它移到新的服务器上.

我配置它的方式完全相同(我可以告诉)但是当我尝试启动构建时,它失败了,我收到以下错误:

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
Run Code Online (Sandbox Code Playgroud)

到达Hudson"workspace"时的pom.xml文件如下所示:

[...]

    <parent>
        <groupId>com.rha</groupId>
        <artifactId>MyProject</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
Run Code Online (Sandbox Code Playgroud)

[...]

    <dependencies>
        <dependency>
            <groupId>com.rha</groupId>
            <artifactId>business</artifactId>
            <version>1.0-SNAPSHOT</version>
            <type>ejb</type>
        </dependency>
        <dependency>
            <groupId>com.rha</groupId>
            <artifactId>web</artifactId>
            <version>1.0-SNAPSHOT</version>
            <type>war</type>
        </dependency>
    </dependencies>

</project>
Run Code Online (Sandbox Code Playgroud)

[编辑]

其实我忘了一些重要的信息:

我的项目分为3个部分:

business(打包成.jar)web(打包成.war)ear(将.war和.jar打包成.ear)

我正在使用Subversion,在我的"trunk"文件夹下,我得到了一个"MyProject"文件夹,包括:

.project
.settings/
business/
ear/
pom.xml
src/
web/
Run Code Online (Sandbox Code Playgroud)

会发生什么:

在我的Hudson作业配置中,我填写了SVN字段"存储库URL":

HTTP:// [...] /主干/ MyProject的/耳

这是"MyProject"文件夹中的"pom.xml":

<?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>
[...]
Run Code Online (Sandbox Code Playgroud)

所以父"pom.xml"实际上位于我的SVN存储库"trunk/MyFolder"下的"../pom.xml".

但哈德森出于某种原因无法看到它(但就像我说的那样,它曾用于以前的服务器).

任何线索?

[/编辑]

我想这是一个新手的错误,我是Maven的初学者,但我无法弄清楚为什么它不再起作用了......

任何帮助将不胜感激 !

萨科

Rag*_*ram 16

relativePath(parent默认)../pom.xml.看起来它不存在于那里.您可以将其设置为空值,以便maven将其作为依赖项下载.

 <relativePath/> 
Run Code Online (Sandbox Code Playgroud)

此链接讨论了这一点.

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

Hudson只看到ear文件夹中的源代码.虽然父pom存在于SVN中,但Hudson无法使用它.缺少父母pom在Maven 2中是一个警告但在Maven 3中是严格的.

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

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

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