This is an automated email from the ASF dual-hosted git repository.

sjaranowski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-archetype.git


The following commit(s) were added to refs/heads/master by this push:
     new 2c22da94 [ARCHETYPE-674] Workaround for Maven 4
2c22da94 is described below

commit 2c22da949f62feadd507329cb16cea0786754dfc
Author: Slawomir Jaranowski <s.jaranow...@gmail.com>
AuthorDate: Wed May 7 20:03:44 2025 +0200

    [ARCHETYPE-674] Workaround for Maven 4
---
 .github/workflows/maven-verify.yml                 |  2 +
 .../maven/archetype/common/MavenJDOMWriter.java    | 75 +++++++++-------------
 2 files changed, 32 insertions(+), 45 deletions(-)

diff --git a/.github/workflows/maven-verify.yml 
b/.github/workflows/maven-verify.yml
index 932827cf..ce4b500d 100644
--- a/.github/workflows/maven-verify.yml
+++ b/.github/workflows/maven-verify.yml
@@ -25,3 +25,5 @@ jobs:
   build:
     name: Verify
     uses: apache/maven-gh-actions-shared/.github/workflows/maven-verify.yml@v4
+    with:
+      maven4-enabled: true
diff --git 
a/archetype-common/src/main/java/org/apache/maven/archetype/common/MavenJDOMWriter.java
 
b/archetype-common/src/main/java/org/apache/maven/archetype/common/MavenJDOMWriter.java
index 0cafbb95..24ccf4eb 100644
--- 
a/archetype-common/src/main/java/org/apache/maven/archetype/common/MavenJDOMWriter.java
+++ 
b/archetype-common/src/main/java/org/apache/maven/archetype/common/MavenJDOMWriter.java
@@ -59,7 +59,6 @@ import org.apache.maven.model.IssueManagement;
 import org.apache.maven.model.License;
 import org.apache.maven.model.MailingList;
 import org.apache.maven.model.Model;
-import org.apache.maven.model.ModelBase;
 import org.apache.maven.model.Notifier;
 import org.apache.maven.model.Organization;
 import org.apache.maven.model.Parent;
@@ -127,7 +126,7 @@ public class MavenJDOMWriter {
      */
     @Deprecated
     public void write(Model project, Document document, OutputStream stream) 
throws java.io.IOException {
-        updateModel(project, "project", new Counter(0), 
document.getRootElement());
+        updateModel(project, new Counter(0), document.getRootElement());
 
         XMLOutputter outputter = new XMLOutputter();
         outputter.setFormat(Format.getPrettyFormat().setIndent("  
").setLineSeparator(LS));
@@ -155,7 +154,7 @@ public class MavenJDOMWriter {
      * @param document
      */
     public void write(Model project, Document document, Writer writer, Format 
jdomFormat) throws java.io.IOException {
-        updateModel(project, "project", new Counter(0), 
document.getRootElement());
+        updateModel(project, new Counter(0), document.getRootElement());
 
         XMLOutputter outputter = new XMLOutputter();
         outputter.setFormat(jdomFormat);
@@ -174,7 +173,7 @@ public class MavenJDOMWriter {
      * @param name
      * @param parent
      */
-    protected Element findAndReplaceProperties(Counter counter, Element 
parent, String name, Map props) {
+    protected void findAndReplaceProperties(Counter counter, Element parent, 
String name, Map props) {
         boolean shouldExist = (props != null) && !props.isEmpty();
         Element element = updateElement(counter, parent, name, shouldExist);
         if (shouldExist) {
@@ -195,7 +194,6 @@ public class MavenJDOMWriter {
                 }
             }
         }
-        return element;
     } // -- Element findAndReplaceProperties(Counter, Element, String, Map)
 
     /**
@@ -207,13 +205,13 @@ public class MavenJDOMWriter {
      * @param name
      * @param parent
      */
-    protected Element findAndReplaceSimpleElement(
+    protected void findAndReplaceSimpleElement(
             Counter counter, Element parent, String name, String text, String 
defaultValue) {
         if ((defaultValue != null) && (text != null) && 
defaultValue.equals(text)) {
             Element element = parent.getChild(name, parent.getNamespace());
             // if exist and is default value or if doesn't exist.. just keep 
the way it is..
             if (((element != null) && defaultValue.equals(element.getText())) 
|| (element == null)) {
-                return element;
+                return;
             }
         }
 
@@ -222,7 +220,6 @@ public class MavenJDOMWriter {
         if (shouldExist) {
             element.setText(text);
         }
-        return element;
     } // -- Element findAndReplaceSimpleElement(Counter, Element, String, 
String, String)
 
     /**
@@ -234,7 +231,7 @@ public class MavenJDOMWriter {
      * @param list
      * @param parent
      */
-    protected Element findAndReplaceSimpleLists(
+    protected void findAndReplaceSimpleLists(
             Counter counter, Element parent, Collection list, String 
parentName, String childName) {
         boolean shouldExist = (list != null) && (list.size() > 0);
         Element element = updateElement(counter, parent, parentName, 
shouldExist);
@@ -269,7 +266,6 @@ public class MavenJDOMWriter {
                 }
             }
         }
-        return element;
     } // -- Element findAndReplaceSimpleLists(Counter, Element, Collection, 
String, String)
 
     /**
@@ -280,13 +276,12 @@ public class MavenJDOMWriter {
      * @param name
      * @param parent
      */
-    protected Element findAndReplaceXpp3DOM(Counter counter, Element parent, 
String name, Xpp3Dom dom) {
+    protected void findAndReplaceXpp3DOM(Counter counter, Element parent, 
String name, Xpp3Dom dom) {
         boolean shouldExist = (dom != null) && ((dom.getChildCount() > 0) || 
(dom.getValue() != null));
         Element element = updateElement(counter, parent, name, shouldExist);
         if (shouldExist) {
             replaceXpp3DOM(element, dom, new Counter(counter.getDepth() + 1));
         }
-        return element;
     } // -- Element findAndReplaceXpp3DOM(Counter, Element, String, Xpp3Dom)
 
     /**
@@ -1022,7 +1017,7 @@ public class MavenJDOMWriter {
                     el = factory.element(childTag, element.getNamespace());
                     insertAtPreferredLocation(element, el, innerCount);
                 }
-                updateResource(value, childTag, innerCount, el);
+                updateResource(value, innerCount, el);
                 innerCount.increaseCount();
             }
             if (elIt != null) {
@@ -1540,9 +1535,8 @@ public class MavenJDOMWriter {
      * @param value
      * @param element
      * @param counter
-     * @param xmlTag
      */
-    protected void updateModel(Model value, String xmlTag, Counter counter, 
Element element) {
+    protected void updateModel(Model value, Counter counter, Element element) {
         Element root = element;
         Counter innerCount = new Counter(counter.getDepth() + 1);
         updateParent(value.getParent(), "parent", innerCount, root);
@@ -1570,39 +1564,13 @@ public class MavenJDOMWriter {
         iterateRepository(innerCount, root, value.getRepositories(), 
"repositories", "repository");
         iterateRepository(innerCount, root, value.getPluginRepositories(), 
"pluginRepositories", "pluginRepository");
         iterateDependency(innerCount, root, value.getDependencies(), 
"dependencies", "dependency");
-        findAndReplaceXpp3DOM(innerCount, root, "reports", (Xpp3Dom) 
value.getReports());
+        findAndReplaceXpp3DOM(innerCount, root, "reports", (Xpp3Dom) 
safeGetReports(value));
         updateReporting(value.getReporting(), "reporting", innerCount, root);
         updateDependencyManagement(value.getDependencyManagement(), 
"dependencyManagement", innerCount, root);
         updateDistributionManagement(value.getDistributionManagement(), 
"distributionManagement", innerCount, root);
         findAndReplaceProperties(innerCount, root, "properties", 
value.getProperties());
     } // -- void updateModel(Model, String, Counter, Element)
 
-    /**
-     * Method updateModelBase.
-     *
-     * @param value
-     * @param element
-     * @param counter
-     * @param xmlTag
-     */
-    protected void updateModelBase(ModelBase value, String xmlTag, Counter 
counter, Element element) {
-        boolean shouldExist = value != null;
-        Element root = updateElement(counter, element, xmlTag, shouldExist);
-        if (shouldExist) {
-            Counter innerCount = new Counter(counter.getDepth() + 1);
-            findAndReplaceSimpleLists(innerCount, root, value.getModules(), 
"modules", "module");
-            iterateRepository(innerCount, root, value.getRepositories(), 
"repositories", "repository");
-            iterateRepository(
-                    innerCount, root, value.getPluginRepositories(), 
"pluginRepositories", "pluginRepository");
-            iterateDependency(innerCount, root, value.getDependencies(), 
"dependencies", "dependency");
-            findAndReplaceXpp3DOM(innerCount, root, "reports", (Xpp3Dom) 
value.getReports());
-            updateReporting(value.getReporting(), "reporting", innerCount, 
root);
-            updateDependencyManagement(value.getDependencyManagement(), 
"dependencyManagement", innerCount, root);
-            updateDistributionManagement(value.getDistributionManagement(), 
"distributionManagement", innerCount, root);
-            findAndReplaceProperties(innerCount, root, "properties", 
value.getProperties());
-        }
-    } // -- void updateModelBase(ModelBase, String, Counter, Element)
-
     /**
      * Method updateNotifier.
      *
@@ -1721,11 +1689,29 @@ public class MavenJDOMWriter {
                 "false");
         iteratePluginExecution(innerCount, root, value.getExecutions(), 
"executions", "execution");
         iterateDependency(innerCount, root, value.getDependencies(), 
"dependencies", "dependency");
-        findAndReplaceXpp3DOM(innerCount, root, "goals", (Xpp3Dom) 
value.getGoals());
+        findAndReplaceXpp3DOM(innerCount, root, "goals", (Xpp3Dom) 
safeGetGoals(value));
         findAndReplaceSimpleElement(innerCount, root, "inherited", 
value.getInherited(), null);
         findAndReplaceXpp3DOM(innerCount, root, "configuration", (Xpp3Dom) 
value.getConfiguration());
     } // -- void updatePlugin(Plugin, String, Counter, Element)
 
+    // Workaround for Maven 4 dropped methods
+
+    private Object safeGetGoals(Plugin plugin) {
+        try {
+            return plugin.getGoals();
+        } catch (NoSuchMethodError e) {
+            return null;
+        }
+    }
+
+    private Object safeGetReports(Model model) {
+        try {
+            return model.getReports();
+        } catch (NoSuchMethodError e) {
+            return null;
+        }
+    }
+
     /**
      * Method updatePluginConfiguration.
      *
@@ -1988,9 +1974,8 @@ public class MavenJDOMWriter {
      * @param value
      * @param element
      * @param counter
-     * @param xmlTag
      */
-    protected void updateResource(Resource value, String xmlTag, Counter 
counter, Element element) {
+    protected void updateResource(Resource value, Counter counter, Element 
element) {
         Element root = element;
         Counter innerCount = new Counter(counter.getDepth() + 1);
         findAndReplaceSimpleElement(innerCount, root, "targetPath", 
value.getTargetPath(), null);

Reply via email to