Skip to content

Commit 2c22da9

Browse files
[ARCHETYPE-674] Workaround for Maven 4
1 parent cb5abbd commit 2c22da9

File tree

2 files changed

+32
-45
lines changed

2 files changed

+32
-45
lines changed

.github/workflows/maven-verify.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,5 @@ jobs:
2525
build:
2626
name: Verify
2727
uses: apache/maven-gh-actions-shared/.github/workflows/maven-verify.yml@v4
28+
with:
29+
maven4-enabled: true

archetype-common/src/main/java/org/apache/maven/archetype/common/MavenJDOMWriter.java

Lines changed: 30 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@
5959
import org.apache.maven.model.License;
6060
import org.apache.maven.model.MailingList;
6161
import org.apache.maven.model.Model;
62-
import org.apache.maven.model.ModelBase;
6362
import org.apache.maven.model.Notifier;
6463
import org.apache.maven.model.Organization;
6564
import org.apache.maven.model.Parent;
@@ -127,7 +126,7 @@ public MavenJDOMWriter() {
127126
*/
128127
@Deprecated
129128
public void write(Model project, Document document, OutputStream stream) throws java.io.IOException {
130-
updateModel(project, "project", new Counter(0), document.getRootElement());
129+
updateModel(project, new Counter(0), document.getRootElement());
131130

132131
XMLOutputter outputter = new XMLOutputter();
133132
outputter.setFormat(Format.getPrettyFormat().setIndent(" ").setLineSeparator(LS));
@@ -155,7 +154,7 @@ public void write(Model project, Document document, OutputStreamWriter writer) t
155154
* @param document
156155
*/
157156
public void write(Model project, Document document, Writer writer, Format jdomFormat) throws java.io.IOException {
158-
updateModel(project, "project", new Counter(0), document.getRootElement());
157+
updateModel(project, new Counter(0), document.getRootElement());
159158

160159
XMLOutputter outputter = new XMLOutputter();
161160
outputter.setFormat(jdomFormat);
@@ -174,7 +173,7 @@ public void write(Model project, Document document, Writer writer, Format jdomFo
174173
* @param name
175174
* @param parent
176175
*/
177-
protected Element findAndReplaceProperties(Counter counter, Element parent, String name, Map props) {
176+
protected void findAndReplaceProperties(Counter counter, Element parent, String name, Map props) {
178177
boolean shouldExist = (props != null) && !props.isEmpty();
179178
Element element = updateElement(counter, parent, name, shouldExist);
180179
if (shouldExist) {
@@ -195,7 +194,6 @@ protected Element findAndReplaceProperties(Counter counter, Element parent, Stri
195194
}
196195
}
197196
}
198-
return element;
199197
} // -- Element findAndReplaceProperties(Counter, Element, String, Map)
200198

201199
/**
@@ -207,13 +205,13 @@ protected Element findAndReplaceProperties(Counter counter, Element parent, Stri
207205
* @param name
208206
* @param parent
209207
*/
210-
protected Element findAndReplaceSimpleElement(
208+
protected void findAndReplaceSimpleElement(
211209
Counter counter, Element parent, String name, String text, String defaultValue) {
212210
if ((defaultValue != null) && (text != null) && defaultValue.equals(text)) {
213211
Element element = parent.getChild(name, parent.getNamespace());
214212
// if exist and is default value or if doesn't exist.. just keep the way it is..
215213
if (((element != null) && defaultValue.equals(element.getText())) || (element == null)) {
216-
return element;
214+
return;
217215
}
218216
}
219217

@@ -222,7 +220,6 @@ protected Element findAndReplaceSimpleElement(
222220
if (shouldExist) {
223221
element.setText(text);
224222
}
225-
return element;
226223
} // -- Element findAndReplaceSimpleElement(Counter, Element, String, String, String)
227224

228225
/**
@@ -234,7 +231,7 @@ protected Element findAndReplaceSimpleElement(
234231
* @param list
235232
* @param parent
236233
*/
237-
protected Element findAndReplaceSimpleLists(
234+
protected void findAndReplaceSimpleLists(
238235
Counter counter, Element parent, Collection list, String parentName, String childName) {
239236
boolean shouldExist = (list != null) && (list.size() > 0);
240237
Element element = updateElement(counter, parent, parentName, shouldExist);
@@ -269,7 +266,6 @@ protected Element findAndReplaceSimpleLists(
269266
}
270267
}
271268
}
272-
return element;
273269
} // -- Element findAndReplaceSimpleLists(Counter, Element, Collection, String, String)
274270

275271
/**
@@ -280,13 +276,12 @@ protected Element findAndReplaceSimpleLists(
280276
* @param name
281277
* @param parent
282278
*/
283-
protected Element findAndReplaceXpp3DOM(Counter counter, Element parent, String name, Xpp3Dom dom) {
279+
protected void findAndReplaceXpp3DOM(Counter counter, Element parent, String name, Xpp3Dom dom) {
284280
boolean shouldExist = (dom != null) && ((dom.getChildCount() > 0) || (dom.getValue() != null));
285281
Element element = updateElement(counter, parent, name, shouldExist);
286282
if (shouldExist) {
287283
replaceXpp3DOM(element, dom, new Counter(counter.getDepth() + 1));
288284
}
289-
return element;
290285
} // -- Element findAndReplaceXpp3DOM(Counter, Element, String, Xpp3Dom)
291286

292287
/**
@@ -1022,7 +1017,7 @@ protected void iterateResource(
10221017
el = factory.element(childTag, element.getNamespace());
10231018
insertAtPreferredLocation(element, el, innerCount);
10241019
}
1025-
updateResource(value, childTag, innerCount, el);
1020+
updateResource(value, innerCount, el);
10261021
innerCount.increaseCount();
10271022
}
10281023
if (elIt != null) {
@@ -1540,9 +1535,8 @@ protected void updateMailingList(MailingList value, String xmlTag, Counter count
15401535
* @param value
15411536
* @param element
15421537
* @param counter
1543-
* @param xmlTag
15441538
*/
1545-
protected void updateModel(Model value, String xmlTag, Counter counter, Element element) {
1539+
protected void updateModel(Model value, Counter counter, Element element) {
15461540
Element root = element;
15471541
Counter innerCount = new Counter(counter.getDepth() + 1);
15481542
updateParent(value.getParent(), "parent", innerCount, root);
@@ -1570,39 +1564,13 @@ protected void updateModel(Model value, String xmlTag, Counter counter, Element
15701564
iterateRepository(innerCount, root, value.getRepositories(), "repositories", "repository");
15711565
iterateRepository(innerCount, root, value.getPluginRepositories(), "pluginRepositories", "pluginRepository");
15721566
iterateDependency(innerCount, root, value.getDependencies(), "dependencies", "dependency");
1573-
findAndReplaceXpp3DOM(innerCount, root, "reports", (Xpp3Dom) value.getReports());
1567+
findAndReplaceXpp3DOM(innerCount, root, "reports", (Xpp3Dom) safeGetReports(value));
15741568
updateReporting(value.getReporting(), "reporting", innerCount, root);
15751569
updateDependencyManagement(value.getDependencyManagement(), "dependencyManagement", innerCount, root);
15761570
updateDistributionManagement(value.getDistributionManagement(), "distributionManagement", innerCount, root);
15771571
findAndReplaceProperties(innerCount, root, "properties", value.getProperties());
15781572
} // -- void updateModel(Model, String, Counter, Element)
15791573

1580-
/**
1581-
* Method updateModelBase.
1582-
*
1583-
* @param value
1584-
* @param element
1585-
* @param counter
1586-
* @param xmlTag
1587-
*/
1588-
protected void updateModelBase(ModelBase value, String xmlTag, Counter counter, Element element) {
1589-
boolean shouldExist = value != null;
1590-
Element root = updateElement(counter, element, xmlTag, shouldExist);
1591-
if (shouldExist) {
1592-
Counter innerCount = new Counter(counter.getDepth() + 1);
1593-
findAndReplaceSimpleLists(innerCount, root, value.getModules(), "modules", "module");
1594-
iterateRepository(innerCount, root, value.getRepositories(), "repositories", "repository");
1595-
iterateRepository(
1596-
innerCount, root, value.getPluginRepositories(), "pluginRepositories", "pluginRepository");
1597-
iterateDependency(innerCount, root, value.getDependencies(), "dependencies", "dependency");
1598-
findAndReplaceXpp3DOM(innerCount, root, "reports", (Xpp3Dom) value.getReports());
1599-
updateReporting(value.getReporting(), "reporting", innerCount, root);
1600-
updateDependencyManagement(value.getDependencyManagement(), "dependencyManagement", innerCount, root);
1601-
updateDistributionManagement(value.getDistributionManagement(), "distributionManagement", innerCount, root);
1602-
findAndReplaceProperties(innerCount, root, "properties", value.getProperties());
1603-
}
1604-
} // -- void updateModelBase(ModelBase, String, Counter, Element)
1605-
16061574
/**
16071575
* Method updateNotifier.
16081576
*
@@ -1721,11 +1689,29 @@ protected void updatePlugin(Plugin value, String xmlTag, Counter counter, Elemen
17211689
"false");
17221690
iteratePluginExecution(innerCount, root, value.getExecutions(), "executions", "execution");
17231691
iterateDependency(innerCount, root, value.getDependencies(), "dependencies", "dependency");
1724-
findAndReplaceXpp3DOM(innerCount, root, "goals", (Xpp3Dom) value.getGoals());
1692+
findAndReplaceXpp3DOM(innerCount, root, "goals", (Xpp3Dom) safeGetGoals(value));
17251693
findAndReplaceSimpleElement(innerCount, root, "inherited", value.getInherited(), null);
17261694
findAndReplaceXpp3DOM(innerCount, root, "configuration", (Xpp3Dom) value.getConfiguration());
17271695
} // -- void updatePlugin(Plugin, String, Counter, Element)
17281696

1697+
// Workaround for Maven 4 dropped methods
1698+
1699+
private Object safeGetGoals(Plugin plugin) {
1700+
try {
1701+
return plugin.getGoals();
1702+
} catch (NoSuchMethodError e) {
1703+
return null;
1704+
}
1705+
}
1706+
1707+
private Object safeGetReports(Model model) {
1708+
try {
1709+
return model.getReports();
1710+
} catch (NoSuchMethodError e) {
1711+
return null;
1712+
}
1713+
}
1714+
17291715
/**
17301716
* Method updatePluginConfiguration.
17311717
*
@@ -1988,9 +1974,8 @@ protected void updateRepositoryPolicy(RepositoryPolicy value, String xmlTag, Cou
19881974
* @param value
19891975
* @param element
19901976
* @param counter
1991-
* @param xmlTag
19921977
*/
1993-
protected void updateResource(Resource value, String xmlTag, Counter counter, Element element) {
1978+
protected void updateResource(Resource value, Counter counter, Element element) {
19941979
Element root = element;
19951980
Counter innerCount = new Counter(counter.getDepth() + 1);
19961981
findAndReplaceSimpleElement(innerCount, root, "targetPath", value.getTargetPath(), null);

0 commit comments

Comments
 (0)