apache / apache/maven-release

[MRELEASE-932] ReleaseFailureException of an artifact with version as a property

Open
#1,114 4 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Java
Stars
128
Forks
145
Avg merge
7h 7m
Merged PRs (30d)
3

Description

**[Antoine](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=elryk)** opened **[MRELEASE-932](https://issues.apache.org/jira/browse/MRELEASE-932?redirect=false)** and commented

After updating the release maven plugin from version 2.0.0 to 2.5.1, I've got the following exception:

```
message : Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.1:prepare (default-cli) on project ping-parent: The artifact (com.mycompagny.myapp:myapp-client) requires a different version (15.4.0) than what is found (12.2.1) for the expression (version.client.tested) in the project (com.mycompagny.myapp:myapp-client).
cause : The artifact (com.mycompagny.myapp:myapp-client) requires a different version (15.4.0) than what is found (12.2.1) for the expression (version.client.tested) in the project (com.mycompagny.myapp:myapp-client).
Stack trace :
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.1:prepare (default-cli) on project ping-parent: The artifact (fr.generali.gael.ping:ping-injection-client) requires a different version (15.4.1-git) than what is found (15.4.0) for the expression (version.client.tested) in the project (fr.generali.gael.ping:ping-client-test).
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java
```

This error happens in a multi-module application.
For testing purpose, we depends from an older version of an artefact of the same application.
When the artefact version is an expression (ie. ${version.client.tested}), the [AbstractRewritePomsPhase](http://grepcode.com/file/repo1.maven.org/maven2/org.apache.maven.release/maven-release-manager/2.5.1/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java/#545) class do a chek.
If we don't use the expression (i.e. properties), the release is working.

Maven configuration that fails:

```

12.1.0

${project.groupId}
myapp-client
${version.client.tested}

```

Maven configuration that is working:

```

${project.groupId}
myapp-client
12.1.0

```

---

**Affects:** 2.5.1, 2.5.3

**Attachments:**
- [MRELEASE-932.zip](https://issues.apache.org/jira/secure/attachment/13030262/MRELEASE-932.zip) (_2.72 kB_)

2 votes, 6 watchers

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the failing Maven release configuration and the attached MRELEASE-932.zip, then inspect AbstractRewritePomsPhase around the reported check. Compare the property-expression dependency with the equivalent literal version and verify that the release prepare operation handles both consistently.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.