This is an automated email from the ASF dual-hosted git repository. kwin pushed a commit to branch feature/ci-friendly-complex-expressions in repository https://gitbox.apache.org/repos/asf/maven-release.git
commit 3517d0f80720d256efe7d3a195278aef247135be Author: mkolesnikov <mikhail_kolesni...@outlook.com> AuthorDate: Wed Nov 29 23:21:59 2023 +0300 MRELEASE-1109 Full support for revision sha1 and changelist properties. --- .../shared/release/phase/RewritePomsForReleasePhase.java | 12 ++++++++++++ .../maven/shared/release/transform/jdom2/JDomModel.java | 12 +++++++++++- .../maven/shared/release/transform/jdom2/JDomProperties.java | 4 +++- .../release/phase/RewritePomsForDevelopmentPhaseTest.java | 5 ++++- .../shared/release/transform/jdom2/JDomPropertiesTest.java | 9 ++++++--- .../expected-pom.xml | 3 ++- .../pom-with-parent-and-cifriendly-expressions/pom.xml | 3 ++- .../subproject1/expected-pom.xml | 2 +- .../subproject1/pom.xml | 2 +- .../expected-pom.xml | 7 ++++++- .../pom-with-parent-and-cifriendly-expressions/pom.xml | 3 ++- .../subproject1/expected-pom.xml | 2 +- .../subproject1/pom.xml | 2 +- maven-release-plugin/pom.xml | 8 +++++++- .../src/it/projects/prepare/invoker.properties | 4 +--- 15 files changed, 60 insertions(+), 18 deletions(-) diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java index 67b9f18c..ac10bfd3 100644 --- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java +++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java @@ -26,6 +26,7 @@ import java.io.IOException; import java.nio.file.LinkOption; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.List; import java.util.Map; import org.apache.maven.artifact.ArtifactUtils; @@ -34,8 +35,10 @@ import org.apache.maven.model.Scm; import org.apache.maven.project.MavenProject; import org.apache.maven.scm.repository.ScmRepository; import org.apache.maven.shared.release.ReleaseExecutionException; +import org.apache.maven.shared.release.ReleaseFailureException; import org.apache.maven.shared.release.ReleaseResult; import org.apache.maven.shared.release.config.ReleaseDescriptor; +import org.apache.maven.shared.release.env.ReleaseEnvironment; import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator; import org.apache.maven.shared.release.scm.ScmTranslator; import org.apache.maven.shared.release.transform.ModelETLFactory; @@ -214,6 +217,15 @@ public class RewritePomsForReleasePhase extends AbstractRewritePomsPhase { return result; } + @Override + public ReleaseResult execute( + ReleaseDescriptor releaseDescriptor, + ReleaseEnvironment releaseEnvironment, + List<MavenProject> reactorProjects) + throws ReleaseExecutionException, ReleaseFailureException { + return super.execute(releaseDescriptor, releaseEnvironment, reactorProjects); + } + @Override protected String getOriginalVersion(ReleaseDescriptor releaseDescriptor, String projectKey, boolean simulate) { return releaseDescriptor.getProjectOriginalVersion(projectKey); diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomModel.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomModel.java index 20d972bd..949ce594 100644 --- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomModel.java +++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomModel.java @@ -23,6 +23,7 @@ import java.util.Collections; import java.util.List; import java.util.Properties; +import org.apache.maven.artifact.ArtifactUtils; import org.apache.maven.model.Build; import org.apache.maven.model.Dependency; import org.apache.maven.model.DependencyManagement; @@ -198,7 +199,16 @@ public class JDomModel extends Model { AbstractRewritePomsPhase.extractPropertyFromExpression(versionElement.getTextNormalize()); Properties properties = getProperties(); if (properties != null) { - properties.setProperty(ciFriendlyPropertyName, version); + String sha1 = properties.getProperty("sha1", ""); + String changelist = properties.getProperty("changelist", ""); + properties.setProperty( + ciFriendlyPropertyName, version.replaceAll(sha1, "").replaceAll(changelist, "")); + if (ArtifactUtils.isSnapshot(version)) { + properties.setProperty("changelist", changelist); + } else { + properties.setProperty(ciFriendlyPropertyName, version); + properties.setProperty("changelist", ""); + } } } else { JDomUtils.rewriteValue(versionElement, version); diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomProperties.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomProperties.java index b2c314f3..6a560649 100644 --- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomProperties.java +++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomProperties.java @@ -114,7 +114,9 @@ public class JDomProperties extends Properties { @Override public String getProperty(String key, String defaultValue) { - throw new UnsupportedOperationException(); + String property = getProperty(key); + + return property == null ? defaultValue : property; } @Override diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhaseTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhaseTest.java index b1bebb81..59cc47c3 100644 --- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhaseTest.java +++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhaseTest.java @@ -404,11 +404,14 @@ public class RewritePomsForDevelopmentPhaseTest extends AbstractEditModeRewritin List<MavenProject> reactorProjects = createReactorProjects("pom-with-parent-and-cifriendly-expressions"); ReleaseDescriptorBuilder builder = - createDescriptorFromProjects(reactorProjects, "pom-with-parent-and-cifriendly-expressions"); + createDescriptorFromProjects(reactorProjects, "pom-with-parent-and-cifriendly-expressions"); builder.addReleaseVersion("groupId:artifactId", RELEASE_VERSION); builder.addDevelopmentVersion("groupId:artifactId", NEXT_VERSION); builder.addReleaseVersion("groupId:subproject1", RELEASE_VERSION); builder.addDevelopmentVersion("groupId:subproject1", NEXT_VERSION); + + mapScm(builder); + phase.execute(ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects); assertTrue(comparePomFiles(reactorProjects)); diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/transform/jdom2/JDomPropertiesTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/transform/jdom2/JDomPropertiesTest.java index fa9f48d9..0335a116 100644 --- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/transform/jdom2/JDomPropertiesTest.java +++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/transform/jdom2/JDomPropertiesTest.java @@ -101,9 +101,12 @@ public class JDomPropertiesTest { assertEquals("VALUE", new JDomProperties(propertiesElm).getProperty("KEY")); } - @Test(expected = UnsupportedOperationException.class) - public void testGetPropertyDefault() { - new JDomProperties(null).getProperty(null, null); + @Test + public void testGetPropertyDefault() throws Exception { + String content = "<properties></properties>"; + Element propertiesElm = builder.build(new StringReader(content)).getRootElement(); + assertNull(new JDomProperties(propertiesElm).getProperty("KEY", null)); + assertEquals("", new JDomProperties(propertiesElm).getProperty("KEY", "")); } @Test(expected = UnsupportedOperationException.class) diff --git a/maven-release-manager/src/test/resources/projects/rewrite-for-development/pom-with-parent-and-cifriendly-expressions/expected-pom.xml b/maven-release-manager/src/test/resources/projects/rewrite-for-development/pom-with-parent-and-cifriendly-expressions/expected-pom.xml index b30f8a7e..d2fe2b7a 100644 --- a/maven-release-manager/src/test/resources/projects/rewrite-for-development/pom-with-parent-and-cifriendly-expressions/expected-pom.xml +++ b/maven-release-manager/src/test/resources/projects/rewrite-for-development/pom-with-parent-and-cifriendly-expressions/expected-pom.xml @@ -20,7 +20,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>groupId</groupId> <artifactId>artifactId</artifactId> - <version>${revision}${changelist}</version> + <version>${revision}${sha1}${changelist}</version> <packaging>pom</packaging> <scm> @@ -31,6 +31,7 @@ <properties> <revision>1.1</revision> + <sha1>.123</sha1> <changelist>-SNAPSHOT</changelist> </properties> diff --git a/maven-release-manager/src/test/resources/projects/rewrite-for-development/pom-with-parent-and-cifriendly-expressions/pom.xml b/maven-release-manager/src/test/resources/projects/rewrite-for-development/pom-with-parent-and-cifriendly-expressions/pom.xml index cf04d4b7..e42e87c9 100644 --- a/maven-release-manager/src/test/resources/projects/rewrite-for-development/pom-with-parent-and-cifriendly-expressions/pom.xml +++ b/maven-release-manager/src/test/resources/projects/rewrite-for-development/pom-with-parent-and-cifriendly-expressions/pom.xml @@ -20,7 +20,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>groupId</groupId> <artifactId>artifactId</artifactId> - <version>${revision}${changelist}</version> + <version>${revision}${sha1}${changelist}</version> <packaging>pom</packaging> <scm> @@ -31,6 +31,7 @@ <properties> <revision>1.0</revision> + <sha1>.123</sha1> <changelist>-SNAPSHOT</changelist> </properties> diff --git a/maven-release-manager/src/test/resources/projects/rewrite-for-development/pom-with-parent-and-cifriendly-expressions/subproject1/expected-pom.xml b/maven-release-manager/src/test/resources/projects/rewrite-for-development/pom-with-parent-and-cifriendly-expressions/subproject1/expected-pom.xml index db70f739..a025619d 100644 --- a/maven-release-manager/src/test/resources/projects/rewrite-for-development/pom-with-parent-and-cifriendly-expressions/subproject1/expected-pom.xml +++ b/maven-release-manager/src/test/resources/projects/rewrite-for-development/pom-with-parent-and-cifriendly-expressions/subproject1/expected-pom.xml @@ -21,7 +21,7 @@ <parent> <groupId>groupId</groupId> <artifactId>artifactId</artifactId> - <version>${revision}${changelist}</version> + <version>${revision}${sha1}${changelist}</version> </parent> <artifactId>subproject1</artifactId> diff --git a/maven-release-manager/src/test/resources/projects/rewrite-for-development/pom-with-parent-and-cifriendly-expressions/subproject1/pom.xml b/maven-release-manager/src/test/resources/projects/rewrite-for-development/pom-with-parent-and-cifriendly-expressions/subproject1/pom.xml index db70f739..a025619d 100644 --- a/maven-release-manager/src/test/resources/projects/rewrite-for-development/pom-with-parent-and-cifriendly-expressions/subproject1/pom.xml +++ b/maven-release-manager/src/test/resources/projects/rewrite-for-development/pom-with-parent-and-cifriendly-expressions/subproject1/pom.xml @@ -21,7 +21,7 @@ <parent> <groupId>groupId</groupId> <artifactId>artifactId</artifactId> - <version>${revision}${changelist}</version> + <version>${revision}${sha1}${changelist}</version> </parent> <artifactId>subproject1</artifactId> diff --git a/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-and-cifriendly-expressions/expected-pom.xml b/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-and-cifriendly-expressions/expected-pom.xml index 00543238..f6bf47ca 100644 --- a/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-and-cifriendly-expressions/expected-pom.xml +++ b/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-and-cifriendly-expressions/expected-pom.xml @@ -20,7 +20,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>groupId</groupId> <artifactId>artifactId</artifactId> - <version>${revision}${changelist}</version> + <version>${revision}${sha1}${changelist}</version> <packaging>pom</packaging> <scm> @@ -31,10 +31,15 @@ <properties> <revision>1.0</revision> +<<<<<<< Upstream, based on master <<<<<<< Upstream, based on master <changelist></changelist> ======= >>>>>>> ab5c8d5 MRELEASE-1109 patch JDomModel +======= + <sha1>.123</sha1> + <changelist></changelist> +>>>>>>> 0ad7bb6 MRELEASE-1109 Full support for revision sha1 and changelist properties. </properties> <modules> diff --git a/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-and-cifriendly-expressions/pom.xml b/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-and-cifriendly-expressions/pom.xml index 5910661e..d428097d 100644 --- a/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-and-cifriendly-expressions/pom.xml +++ b/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-and-cifriendly-expressions/pom.xml @@ -20,7 +20,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>groupId</groupId> <artifactId>artifactId</artifactId> - <version>${revision}${changelist}</version> + <version>${revision}${sha1}${changelist}</version> <packaging>pom</packaging> <scm> @@ -31,6 +31,7 @@ <properties> <revision>1.0</revision> + <sha1>.123</sha1> <changelist>-SNAPSHOT</changelist> </properties> diff --git a/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-and-cifriendly-expressions/subproject1/expected-pom.xml b/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-and-cifriendly-expressions/subproject1/expected-pom.xml index db70f739..a025619d 100644 --- a/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-and-cifriendly-expressions/subproject1/expected-pom.xml +++ b/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-and-cifriendly-expressions/subproject1/expected-pom.xml @@ -21,7 +21,7 @@ <parent> <groupId>groupId</groupId> <artifactId>artifactId</artifactId> - <version>${revision}${changelist}</version> + <version>${revision}${sha1}${changelist}</version> </parent> <artifactId>subproject1</artifactId> diff --git a/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-and-cifriendly-expressions/subproject1/pom.xml b/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-and-cifriendly-expressions/subproject1/pom.xml index db70f739..a025619d 100644 --- a/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-and-cifriendly-expressions/subproject1/pom.xml +++ b/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-and-cifriendly-expressions/subproject1/pom.xml @@ -21,7 +21,7 @@ <parent> <groupId>groupId</groupId> <artifactId>artifactId</artifactId> - <version>${revision}${changelist}</version> + <version>${revision}${sha1}${changelist}</version> </parent> <artifactId>subproject1</artifactId> diff --git a/maven-release-plugin/pom.xml b/maven-release-plugin/pom.xml index 2af4a213..3aa59772 100644 --- a/maven-release-plugin/pom.xml +++ b/maven-release-plugin/pom.xml @@ -224,7 +224,13 @@ <setupInclude>setup/*/pom.xml</setupInclude> </setupIncludes> <pomIncludes> - <pomInclude>projects/prepare/ci-friendly-multi-module/*pom.xml</pomInclude> + <pomInclude>projects/prepare/*/*pom.xml</pomInclude> + <pomInclude>projects/prepare/flat-multi-module/parent-project/pom.xml</pomInclude> + <pomInclude>projects/prepare-with-pom/*/*pom.xml</pomInclude> + <pomInclude>projects/branch/*/pom.xml</pomInclude> + <pomInclude>projects/perform/*/pom.xml</pomInclude> + <pomInclude>projects/update-versions/*/pom.xml</pomInclude> + <pomInclude>projects/stage/*/pom.xml</pomInclude> </pomIncludes> <pomExcludes> <pomExclude>projects/prepare/MRELEASE-966/pom.xml</pomExclude> diff --git a/maven-release-plugin/src/it/projects/prepare/invoker.properties b/maven-release-plugin/src/it/projects/prepare/invoker.properties index 2ac39567..43b6c5fc 100644 --- a/maven-release-plugin/src/it/projects/prepare/invoker.properties +++ b/maven-release-plugin/src/it/projects/prepare/invoker.properties @@ -15,6 +15,4 @@ # specific language governing permissions and limitations # under the License. -invoker.goals = release:clean release:prepare - -invoker.mavenOpts = -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005 \ No newline at end of file +invoker.goals = release:clean release:prepare \ No newline at end of file