Hudson build fail: Non-resolvable parent POM
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)
Nicolas
Updated on July 17, 2022Comments
-
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 over 13 yearsI 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 over 13 yearsThanks 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 over 13 yearsI 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 over 13 yearsAs 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 about 12 yearsA 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 over 11 yearsThis 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 almost 11 yearsThank 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).