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

Reply via email to