1

tl;dr: mvn clean install works as expected, but Jenkins is not able to resolve variables in child poms.

We have a project with a main pom and multiple sub poms. It seems to fail in the sub pom with the variable ${project.version} not being resolved (see the error message below and scroll to its end).

Main 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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>group</groupId>
    <artifactId>artifact</artifactId>
    <version>1.0.0.0-SNAPSHOT</version>
    ...
</project>

Sub pom:

<parent>
    <groupId>group</groupId>
    <artifactId>artifact</artifactId>
    <version>${project.version}</version>
    <relativePath>../pom.xml</relativePath>
</parent>

mvn clean install on the console works flawlessly:

[INFO] Installing /path/to/jenkins/workspace/Project/pom.xml to /path/to/.m2/repository/de/project/1.0.0.0-SNAPSHOT/project-1.0.0.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
...
[INFO] PROJECT 1.0.0.0-SNAPSHOT - EAR project ........... SUCCESS [  5.038 s]
[INFO] PROJECT 1.0.0.0-SNAPSHOT - Aggregator project ........ SUCCESS [  0.156 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:03 min
[INFO] Finished at: 2016-09-20T12:58:03+02:00
[INFO] Final Memory: 104M/1088M
[INFO] ------------------------------------------------------------------------

Jenkins fails to parse the pom and produces the following error:

Parsing POMs
ERROR: Failed to parse POMs
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM: Failure to transfer my.package:project:pom:${project.version} from http://mynexus.com/content/groups/default was cached in the local repository, resolution will not be reattempted until the update interval of nexus-default has elapsed or updates are forced. Original error: Could not transfer artifact my.package:project:pom:${project.version} from/to nexus-default (http://mynexus.com/content/groups/default): Illegal character in path at index 78: http://mynexus.com/content/groups/default/my/package/project/${project.version}/panda-${project.version}.pom and 'parent.relativePath' points at wrong local POM @ line 26, column 10

What has to be changed so that Jenkins can parse the pom file aswell?

The linked question states that maven would not be able to parse the child's properties as they wouldn't exist. The maven logs above show that this is not the case.

The information above is redacted. Typos are not the reason for this issue.

Community
  • 1
  • 1
michaelbahr
  • 4,837
  • 2
  • 39
  • 75
  • 2
    Possible duplicate of [Unable to resolve ${project.version} in child pom.xml from parent pom.xml](http://stackoverflow.com/questions/26858565/unable-to-resolve-project-version-in-child-pom-xml-from-parent-pom-xml) – Joe Sep 20 '16 at 09:59
  • The linked answer states that maven is not able to parse the pom from a sub-folder. However here the command is executed from the project root folder and works flawlessly (except on Jenkins' pre parsing). – michaelbahr Sep 20 '16 at 10:54

1 Answers1

0

I fixed it by use Freestyle project Job instead of Maven project Job. Run native maven command in shell or locally didn't have this problem.

A similar error: JENKINS-23846

atealxt
  • 186
  • 1
  • 6