From 11d6a5463b9884838ab791b7187e4e84bfbd6b37 Mon Sep 17 00:00:00 2001 From: Andrzej Jarmoniuk Date: Thu, 15 Dec 2022 16:58:23 +0100 Subject: [PATCH] Resolves #855: Set should evaluate expressions --- .../org/codehaus/mojo/versions/SetMojo.java | 21 +++++++++++-- .../codehaus/mojo/versions/SetMojoTest.java | 31 +++++++++++++++++++ .../mojo/set/issue-855/pom-build-number.xml | 29 +++++++++++++++++ .../mojo/set/issue-855/pom-multiple-props.xml | 29 +++++++++++++++++ .../mojo/set/issue-855/pom-simple.xml | 29 +++++++++++++++++ .../mojo/set/issue-855/pom-undefined.xml | 29 +++++++++++++++++ 6 files changed, 165 insertions(+), 3 deletions(-) create mode 100644 versions-maven-plugin/src/test/resources/org/codehaus/mojo/set/issue-855/pom-build-number.xml create mode 100644 versions-maven-plugin/src/test/resources/org/codehaus/mojo/set/issue-855/pom-multiple-props.xml create mode 100644 versions-maven-plugin/src/test/resources/org/codehaus/mojo/set/issue-855/pom-simple.xml create mode 100644 versions-maven-plugin/src/test/resources/org/codehaus/mojo/set/issue-855/pom-undefined.xml 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 691a8d213b..57e25182db 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().stream() + .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..68596bbe5e 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,35 @@ public void testSetOldVersionMismatchProcessAllModules() throws Exception { String.join("", Files.readAllLines(tempDir.resolve("pom.xml"))), not(containsString("bar"))); } + + private void testSetParameterValue(String filename) throws Exception { + Files.copy( + Paths.get("src/test/resources/org/codehaus/mojo/set/issue-855/").resolve(filename), + tempDir.resolve("pom.xml")); + SetMojo mojo = (SetMojo) mojoRule.lookupConfiguredMojo(tempDir.toFile(), "set"); + mojo.execute(); + assertThat( + String.join("", Files.readAllLines(tempDir.resolve("pom.xml"))), + containsString("testing")); + } + + @Test + public void testSetParameterValueSimple() throws Exception { + testSetParameterValue("pom-simple.xml"); + } + + @Test + public void testSetParameterValueBuildNumber() throws Exception { + testSetParameterValue("pom-build-number.xml"); + } + + @Test + public void testSetParameterValueUndefined() throws Exception { + testSetParameterValue("pom-undefined.xml"); + } + + @Test + public void testSetParameterValueMultipleProps() throws Exception { + testSetParameterValue("pom-multiple-props.xml"); + } } diff --git a/versions-maven-plugin/src/test/resources/org/codehaus/mojo/set/issue-855/pom-build-number.xml b/versions-maven-plugin/src/test/resources/org/codehaus/mojo/set/issue-855/pom-build-number.xml new file mode 100644 index 0000000000..ccb50602c6 --- /dev/null +++ b/versions-maven-plugin/src/test/resources/org/codehaus/mojo/set/issue-855/pom-build-number.xml @@ -0,0 +1,29 @@ + + org.example + test-versions + ${revision} + 4.0.0 + + + 1.0.0-${buildNumber}-SNAPSHOT + + + + + + + org.codehaus.mojo + versions-maven-plugin + + set + + + testing + false + + + + + diff --git a/versions-maven-plugin/src/test/resources/org/codehaus/mojo/set/issue-855/pom-multiple-props.xml b/versions-maven-plugin/src/test/resources/org/codehaus/mojo/set/issue-855/pom-multiple-props.xml new file mode 100644 index 0000000000..ccb50602c6 --- /dev/null +++ b/versions-maven-plugin/src/test/resources/org/codehaus/mojo/set/issue-855/pom-multiple-props.xml @@ -0,0 +1,29 @@ + + org.example + test-versions + ${revision} + 4.0.0 + + + 1.0.0-${buildNumber}-SNAPSHOT + + + + + + + org.codehaus.mojo + versions-maven-plugin + + set + + + testing + false + + + + + diff --git a/versions-maven-plugin/src/test/resources/org/codehaus/mojo/set/issue-855/pom-simple.xml b/versions-maven-plugin/src/test/resources/org/codehaus/mojo/set/issue-855/pom-simple.xml new file mode 100644 index 0000000000..f685fd06d1 --- /dev/null +++ b/versions-maven-plugin/src/test/resources/org/codehaus/mojo/set/issue-855/pom-simple.xml @@ -0,0 +1,29 @@ + + org.example + test-versions + ${revision} + 4.0.0 + + + 1.3 + + + + + + + org.codehaus.mojo + versions-maven-plugin + + set + + + testing + false + + + + + diff --git a/versions-maven-plugin/src/test/resources/org/codehaus/mojo/set/issue-855/pom-undefined.xml b/versions-maven-plugin/src/test/resources/org/codehaus/mojo/set/issue-855/pom-undefined.xml new file mode 100644 index 0000000000..ccb50602c6 --- /dev/null +++ b/versions-maven-plugin/src/test/resources/org/codehaus/mojo/set/issue-855/pom-undefined.xml @@ -0,0 +1,29 @@ + + org.example + test-versions + ${revision} + 4.0.0 + + + 1.0.0-${buildNumber}-SNAPSHOT + + + + + + + org.codehaus.mojo + versions-maven-plugin + + set + + + testing + false + + + + +