diff --git a/versions-maven-plugin/src/main/java/org/codehaus/mojo/versions/SetMojo.java b/versions-maven-plugin/src/main/java/org/codehaus/mojo/versions/SetMojo.java index 4cfdacae24..645116e0b3 100644 --- a/versions-maven-plugin/src/main/java/org/codehaus/mojo/versions/SetMojo.java +++ b/versions-maven-plugin/src/main/java/org/codehaus/mojo/versions/SetMojo.java @@ -39,6 +39,7 @@ import java.util.TimeZone; import java.util.TreeMap; import java.util.regex.Pattern; +import java.util.stream.Collectors; import org.apache.maven.artifact.ArtifactUtils; import org.apache.maven.model.Model; @@ -65,6 +66,7 @@ import org.codehaus.plexus.components.interactivity.PrompterException; import org.codehaus.plexus.util.StringUtils; +import static java.util.Optional.ofNullable; import static org.codehaus.plexus.util.StringUtils.isEmpty; /** @@ -348,9 +350,22 @@ public void execute() throws MojoExecutionException, MojoFailureException { Pattern.compile(RegexUtils.convertWildcardsToRegex(fixNullOrEmpty(oldVersion, "*"), true)); for (Model m : reactor.values()) { - final String mGroupId = PomHelper.getGroupId(m); - final String mArtifactId = PomHelper.getArtifactId(m); - final String mVersion = PomHelper.getVersion(m); + Map properties = ofNullable(m.getProperties()) + .map(p -> p.entrySet().parallelStream() + .collect(Collectors.toMap(e -> e.getKey().toString(), e -> e.getValue() + .toString()))) + .orElse(null); + + String mGroupId = PomHelper.getGroupId(m); + String mArtifactId = PomHelper.getArtifactId(m); + String mVersion = PomHelper.getVersion(m); + + if (properties != null) { + mGroupId = PomHelper.evaluate(mGroupId, properties); + mArtifactId = PomHelper.evaluate(mArtifactId, properties); + mVersion = PomHelper.evaluate(mVersion, properties); + } + if ((processAllModules || groupIdRegex.matcher(mGroupId).matches() && artifactIdRegex.matcher(mArtifactId).matches()) diff --git a/versions-maven-plugin/src/test/java/org/codehaus/mojo/versions/SetMojoTest.java b/versions-maven-plugin/src/test/java/org/codehaus/mojo/versions/SetMojoTest.java index 1decf8f987..9bcac90e8f 100644 --- a/versions-maven-plugin/src/test/java/org/codehaus/mojo/versions/SetMojoTest.java +++ b/versions-maven-plugin/src/test/java/org/codehaus/mojo/versions/SetMojoTest.java @@ -158,4 +158,14 @@ public void testSetOldVersionMismatchProcessAllModules() throws Exception { String.join("", Files.readAllLines(tempDir.resolve("pom.xml"))), not(containsString("bar"))); } + + @Test + public void testSetParameterValue() throws Exception { + TestUtils.copyDir(Paths.get("src/test/resources/org/codehaus/mojo/set/issue-855"), tempDir); + SetMojo mojo = (SetMojo) mojoRule.lookupConfiguredMojo(tempDir.toFile(), "set"); + mojo.execute(); + assertThat( + String.join("", Files.readAllLines(tempDir.resolve("pom.xml"))), + not(containsString("${revision}"))); + } } diff --git a/versions-maven-plugin/src/test/resources/org/codehaus/mojo/set/issue-855/pom.xml b/versions-maven-plugin/src/test/resources/org/codehaus/mojo/set/issue-855/pom.xml new file mode 100644 index 0000000000..4ace66e51f --- /dev/null +++ b/versions-maven-plugin/src/test/resources/org/codehaus/mojo/set/issue-855/pom.xml @@ -0,0 +1,48 @@ + + + + org.example + test-versions + ${revision} + 4.0.0 + + + 1.3 + + + + + + + org.codehaus.mojo + versions-maven-plugin + + set + + + testing + false + + + + +