Hudson build fail: Non-resolvable parent POM

51,486

Solution 1

relativePath (of the parent) defaults to ../pom.xml. It looks like it is not present in there. You could set it to an empty value so that maven downloads it as a dependency.

 <relativePath/> 

This link discusses this.

[Edit: based on the edits to the question]

Hudson only sees the source code inside ear folder. Though the parent pom is present in SVN, it is not available to Hudson. Missing parent pom was aa warning in Maven 2 but strict in Maven 3.

There are two ways to solve this.

One is to specify to hudson, the url http://[...]/trunk/MyProject/. You can then chose to build all the modules or still choose to build the pom.xml of ear project alone.

The other is to manually run mvn install on the hudson system so that the parent pom gets deployed once and thereafter used by hudson. However, this will not get updated if parent pom is subsequently changed.

Solution 2

Retrieving the Root-POM from the Maven-REPO should usually also work (like you do), but I would expect you havn't triggered the root pom to be installed into the REPO on the new hudson site so far.

To avoid this use the relativePath property, e.g. something like this:

<relativePath>../pom.xml</relativePath>

in your <parent> tag which will tell maven to look for the root pom in your module structure.

Solution 3

I had the same problem with Hudson, Sonar plugin and a multi-module Maven project: "Non-resolvable parent POM" when Hudson tried to run sonar:sonar. The solution was to specify the Root POM location in the Hudson job configuration under the Sonar section.

The project structure in SVN (each one is a Maven project with pom.xml in the project root):

foo-parent
  +- foo-ui-module
  +- bar-other-module

I have individual Hudson jobs for each project, "foo-parent", "foo-ui-module" and "bar-other-module". The Sonar run in a Hudson job could not find the parent POM even though the build was successful until that point. Maybe the Sonar plugin doesn't use the same Maven settings as the rest of the job because it didn't try to look for the parent POM from our Artifactory repository, not even with <relativePath/> in the project POM.

The place for the Root POM setting was under the job's Configure -> Sonar -> Advanced -> Root POM: ../foo-parent/pom.xml (I have foo-parent job at this path)

Share:
51,486
Nicolas
Author by

Nicolas

Updated on July 17, 2022

Comments

  • Nicolas
    Nicolas almost 2 years

    I used to work with Hudson on my project, and lately I had to move it to a new server.

    I configured it the exact same way it use to be (for all I can tell) but when I try to launch a build, it fails and I get the following error:

    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
    

    The pom.xml file when I got to Hudson "workspace" looks like this:

    [...]

        <parent>
            <groupId>com.rha</groupId>
            <artifactId>MyProject</artifactId>
            <version>1.0-SNAPSHOT</version>
        </parent>
    

    [...]

        <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>
    

    [Edit]

    Actually I forgot some important informations:

    My project is divided into 3 parts:

    business (packaged into .jar) web (packaged into a .war) ear (packaged the .war and .jar into a .ear)

    I'm using Subversion, and under my "trunk" folder I got a "MyProject" folder including:

    .project
    .settings/
    business/
    ear/
    pom.xml
    src/
    web/
    

    what happens is:

    in my Hudson job configuration, I filled the SVN field "repository URL" with:

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

    and here is the "pom.xml" from "MyProject" folder:

    <?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>
    [...]
    

    so the parent "pom.xml" is actually located at "../pom.xml" on my SVN repository, under "trunk/MyFolder".

    But Hudson can't see it for some reason (but like I said, it used to work on the previous server).

    Any clue ?

    [/Edit]

    I guess this is a rookie mistake, I'm a total beginner on Maven, but I just can't figure out why it's not working anymore ...

    Any help will be greatly appreciated !

    Nicolas

  • Nicolas
    Nicolas over 13 years
    I tried it, and I still got an error: [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
  • Nicolas
    Nicolas over 13 years
    Thanks a lot for the answer ! I change the URL to ` http://[...]/trunk/MyProject/` so now I can see 3 modules. I went to the "ear" module and configure Maven goal to clean package cargo:redeploy -P integration but when trying to build, I got the following: [...] <===[HUDSON REMOTING CAPACITY]===>channel started Finished: ABORTED. It basically build nothing =/
  • Nicolas
    Nicolas over 13 years
    I eventually went for the mvn install method. It does work but I don't like the fact that the parent pom.xml can't be updated ... thanks a lot anyway !
  • HefferWolf
    HefferWolf over 13 years
    As the error message says: the relativePath property is set to a wrong path, e.g. if your pom is in /home/test/project/moduleA and your root pom is in /home/test/project/ then you add "../pom.xml" as mentioned above.
  • Jonatan Cloutier
    Jonatan Cloutier about 12 years
    A work around for the parent pom.xml update problem is to have a jenkins maven job that just install it and is triggered like any other jobs, as a bonus if the parent pom is updated all dependent job will be rebuild as well
  • Wojtek
    Wojtek over 11 years
    This answer saved me lots of time. Just had a similar issue with the Spring in Action examples. I copied them to my Eclipse Workspace, but didn't notice the parent POM, which was in the folder above them.
  • vikingsteve
    vikingsteve almost 11 years
    Thank you for your answer, which explained what is happening. Our solution was to delete some files from the jenkins server .m2 repository (see separate answer).