You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kw...@apache.org on 2025/07/28 12:17:00 UTC
(maven-release) 12/15: MRELEASE-1109 Using scmRevision as sha1 value if the property defined but nothing was provided by a user
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 39d00078f9fd7682749698277065754349ce96ef
Author: mkolesnikov <mi...@outlook.com>
AuthorDate: Wed Jun 5 03:21:12 2024 +0300
MRELEASE-1109 Using scmRevision as sha1 value if the property defined but nothing was provided by a user
---
.../shared/release/transform/jdom2/JDomModel.java | 17 +++++++++--------
.../release/transform/jdom2/JDomModelETL.java | 2 +-
.../shared/release/util/CiFriendlyVersion.java | 22 +++++++++++++++++++---
.../release/transform/jdom2/JDomModelTest.java | 15 ++++++++-------
.../ci-friendly-multi-module/invoker.properties | 2 +-
.../prepare/ci-friendly-multi-module/verify.groovy | 2 +-
6 files changed, 39 insertions(+), 21 deletions(-)
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 c60d9936..c6b153d9 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
@@ -31,7 +31,7 @@ import org.apache.maven.model.Parent;
import org.apache.maven.model.Profile;
import org.apache.maven.model.Reporting;
import org.apache.maven.model.Scm;
-import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.release.config.ReleaseDescriptor;
import org.apache.maven.shared.release.util.CiFriendlyVersion;
import org.jdom2.Document;
import org.jdom2.Element;
@@ -49,17 +49,18 @@ public class JDomModel extends Model {
private final JDomModelBase modelBase;
/**
- * The currently running MavenProject
+ * The ReleaseDescriptor after a commit performed
+ *
*/
- private final MavenProject mavenProject;
+ private final ReleaseDescriptor releaseDescriptor;
/**
* <p>Constructor for JDomModel.</p>
*
* @param document a {@link org.jdom2.Document} object
*/
- public JDomModel(Document document, MavenProject mavenProject) {
- this(document.getRootElement(), mavenProject);
+ public JDomModel(Document document, ReleaseDescriptor releaseDescriptor) {
+ this(document.getRootElement(), releaseDescriptor);
}
/**
@@ -67,9 +68,9 @@ public class JDomModel extends Model {
*
* @param project a {@link org.jdom2.Element} object
*/
- public JDomModel(Element project, MavenProject mavenProject) {
+ public JDomModel(Element project, ReleaseDescriptor releaseDescriptor) {
this.project = project;
- this.mavenProject = mavenProject;
+ this.releaseDescriptor = releaseDescriptor;
this.modelBase = new JDomModelBase(project);
}
@@ -205,7 +206,7 @@ public class JDomModel extends Model {
version,
versionElement.getTextNormalize(),
(JDomProperties) getProperties(),
- mavenProject.getProperties());
+ releaseDescriptor);
} else {
JDomUtils.rewriteValue(versionElement, version);
}
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomModelETL.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomModelETL.java
index e8d74096..640f574e 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomModelETL.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomModelETL.java
@@ -159,7 +159,7 @@ public class JDomModelETL implements ModelETL {
@Override
public Model getModel() {
- return new JDomModel(document, project);
+ return new JDomModel(document, releaseDescriptor);
}
private void normaliseLineEndings(Document document) {
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/CiFriendlyVersion.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/CiFriendlyVersion.java
index 406b015a..3eaeaa92 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/CiFriendlyVersion.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/CiFriendlyVersion.java
@@ -20,12 +20,12 @@ package org.apache.maven.shared.release.util;
import java.util.Arrays;
import java.util.HashSet;
-import java.util.Properties;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.maven.artifact.ArtifactUtils;
+import org.apache.maven.shared.release.config.ReleaseDescriptor;
import org.apache.maven.shared.release.transform.jdom2.JDomProperties;
public class CiFriendlyVersion {
@@ -72,11 +72,11 @@ public class CiFriendlyVersion {
}
public static void rewriteVersionAndProperties(
- String version, String versionElement, JDomProperties jDomProperties, Properties mavenProperties) {
+ String version, String versionElement, JDomProperties jDomProperties, ReleaseDescriptor releaseDescriptor) {
// try to rewrite property if CI friendly expression is used
String ciFriendlyPropertyName = extractPropertyFromExpression(versionElement);
if (jDomProperties != null) {
- String sha1 = jDomProperties.getProperty(SHA1, mavenProperties.getProperty(SHA1, ""));
+ String sha1 = resolveSha1Property(jDomProperties, releaseDescriptor);
// assume that everybody follows the example and properties are simply chained
// and the changelist can only be '-SNAPSHOT'
if (ArtifactUtils.isSnapshot(version)) {
@@ -87,13 +87,29 @@ public class CiFriendlyVersion {
} else {
jDomProperties.setProperty(ciFriendlyPropertyName, version.replace(sha1, ""));
}
+ if (jDomProperties.containsKey(SHA1)) {
+ // drop the value for the next version
+ jDomProperties.setProperty(SHA1, "");
+ }
} else {
jDomProperties.setProperty(
ciFriendlyPropertyName, version.replace(sha1, "").replace(SNAPSHOT, ""));
if (jDomProperties.containsKey(CHANGELIST)) {
jDomProperties.setProperty(CHANGELIST, "");
}
+ if (jDomProperties.containsKey(SHA1) && !sha1.isEmpty()) {
+ // we need this to restore the revision for the next development
+ // or release:prepare should provide sha1 after a commit
+ // or a user should provide it as an additional `arguments` in plugin configuration
+ // see maven-release-plugin/src/it/projects/prepare/ci-friendly-multi-module
+ jDomProperties.setProperty(SHA1, sha1);
+ }
}
}
}
+
+ private static String resolveSha1Property(JDomProperties jDomProperties, ReleaseDescriptor releaseDescriptor) {
+ String scmVersion = releaseDescriptor.getScmReleasedPomRevision();
+ return jDomProperties.getProperty(SHA1, System.getProperty(SHA1, scmVersion == null ? "" : scmVersion));
+ }
}
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/transform/jdom2/JDomModelTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/transform/jdom2/JDomModelTest.java
index 5849121c..3967274b 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/transform/jdom2/JDomModelTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/transform/jdom2/JDomModelTest.java
@@ -22,7 +22,8 @@ import java.io.StringReader;
import org.apache.maven.model.Model;
import org.apache.maven.model.Scm;
-import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.release.config.ReleaseDescriptor;
+import org.apache.maven.shared.release.config.ReleaseDescriptorBuilder;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;
@@ -34,20 +35,20 @@ import static org.junit.Assert.assertNull;
public class JDomModelTest {
private SAXBuilder builder = new SAXBuilder();
- private MavenProject mavenProject = new MavenProject();
+ private ReleaseDescriptor releaseDescriptor = new ReleaseDescriptorBuilder().build();
@Test
public void testGetScm() throws Exception {
String content = "<project></project>";
Document document = builder.build(new StringReader(content));
- assertNull(new JDomModel(document, mavenProject).getScm());
+ assertNull(new JDomModel(document, releaseDescriptor).getScm());
}
@Test
public void testSetScm() throws Exception {
String content = "<project></project>";
Document document = builder.build(new StringReader(content));
- Model model = new JDomModel(document, mavenProject);
+ Model model = new JDomModel(document, releaseDescriptor);
assertNull(model.getScm());
model.setScm(new Scm());
@@ -61,7 +62,7 @@ public class JDomModelTest {
public void testSetVersion() throws Exception {
String content = "<project></project>";
Element projectElm = builder.build(new StringReader(content)).getRootElement();
- Model model = new JDomModel(projectElm, mavenProject);
+ Model model = new JDomModel(projectElm, releaseDescriptor);
assertNull(model.getVersion());
model.setVersion("VERSION");
@@ -73,7 +74,7 @@ public class JDomModelTest {
// inherit from parent via CI friendly
content = "<project><parent><version>${revision}${changelist}</version></parent></project>";
projectElm = builder.build(new StringReader(content)).getRootElement();
- model = new JDomModel(projectElm, mavenProject);
+ model = new JDomModel(projectElm, releaseDescriptor);
assertNull(model.getVersion());
model.setVersion("PARENT_VERSION");
assertNull(getVersion(projectElm));
@@ -81,7 +82,7 @@ public class JDomModelTest {
// this business logic might need to moved.
content = "<project><parent><version>PARENT_VERSION</version></parent></project>";
projectElm = builder.build(new StringReader(content)).getRootElement();
- model = new JDomModel(projectElm, mavenProject);
+ model = new JDomModel(projectElm, releaseDescriptor);
assertNull(model.getVersion());
model.setVersion("PARENT_VERSION");
diff --git a/maven-release-plugin/src/it/projects/prepare/ci-friendly-multi-module/invoker.properties b/maven-release-plugin/src/it/projects/prepare/ci-friendly-multi-module/invoker.properties
index 0f980493..65218864 100644
--- a/maven-release-plugin/src/it/projects/prepare/ci-friendly-multi-module/invoker.properties
+++ b/maven-release-plugin/src/it/projects/prepare/ci-friendly-multi-module/invoker.properties
@@ -16,4 +16,4 @@
# under the License.
invoker.goals=release:clean release:prepare
-invoker.mavenOpts=-Dsha1=-123
\ No newline at end of file
+invoker.mavenOpts=-Dsha1=-abcdef12 -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005
\ No newline at end of file
diff --git a/maven-release-plugin/src/it/projects/prepare/ci-friendly-multi-module/verify.groovy b/maven-release-plugin/src/it/projects/prepare/ci-friendly-multi-module/verify.groovy
index 4486794e..febfa0ce 100644
--- a/maven-release-plugin/src/it/projects/prepare/ci-friendly-multi-module/verify.groovy
+++ b/maven-release-plugin/src/it/projects/prepare/ci-friendly-multi-module/verify.groovy
@@ -26,7 +26,7 @@ assert buildLog.exists()
def projectRootTag = new XmlSlurper().parse( new File( basedir, 'pom.xml.tag' ) )
assert projectRootTag.version.text() == '${revision}${sha1}${changelist}'
assert projectRootTag.properties.revision.text() == "1.0"
-assert projectRootTag.properties.sha1.text() == ""
+assert projectRootTag.properties.sha1.text() == "-abcdef12"
assert projectRootTag.properties.changelist.text() == ""
def projectATag = new XmlSlurper().parse( new File( basedir, 'module-a/pom.xml.tag' ) )