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

slachiewicz pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/maven-remote-resources-plugin.git

commit e4e9f410f8e1862bf11b507470257ff369a24756
Author: Elliotte Rusty Harold <[email protected]>
AuthorDate: Sun Aug 2 11:34:57 2026 +0000

    Skip malformed supplemental model entries instead of failing with NPE (#266)
---
 .../remote/AbstractProcessRemoteResourcesMojo.java |  4 ++++
 .../resources/remote/RemoteResourcesMojoTest.java  | 25 ++++++++++++++++++++++
 2 files changed, 29 insertions(+)

diff --git 
a/src/main/java/org/apache/maven/plugin/resources/remote/AbstractProcessRemoteResourcesMojo.java
 
b/src/main/java/org/apache/maven/plugin/resources/remote/AbstractProcessRemoteResourcesMojo.java
index 0e830ff..6b43167 100644
--- 
a/src/main/java/org/apache/maven/plugin/resources/remote/AbstractProcessRemoteResourcesMojo.java
+++ 
b/src/main/java/org/apache/maven/plugin/resources/remote/AbstractProcessRemoteResourcesMojo.java
@@ -1170,6 +1170,10 @@ public abstract class AbstractProcessRemoteResourcesMojo 
extends AbstractMojo {
             Xpp3Dom dom = (Xpp3Dom) sd.getProject();
 
             Model m = getSupplement(dom);
+            if (m == null) {
+                getLog().warn("Skipping malformed supplemental model entry.");
+                continue;
+            }
             supplementMap.put(generateSupplementMapKey(m.getGroupId(), 
m.getArtifactId()), m);
         }
 
diff --git 
a/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
 
b/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
index 0c4d7ba..28cf447 100644
--- 
a/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
+++ 
b/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
@@ -223,6 +223,31 @@ public class RemoteResourcesMojoTest extends 
AbstractMojoTestCase {
         }
     }
 
+    public void testMalformedSupplementalModelDoesNotBreakBuild() throws 
Exception {
+        final MavenProjectResourcesStub project = 
createTestProject("default-malformedsupplement");
+        final ProcessRemoteResourcesMojo mojo = 
lookupProcessMojoWithDefaultSettings(project);
+
+        setupDefaultProject(project);
+
+        File supplementalModelsFile = new File(project.getBasedir(), 
"supplemental-models.xml");
+        FileUtils.fileWrite(
+                supplementalModelsFile.getAbsolutePath(),
+                "<supplementalDataModels>"
+                        + "<supplement>"
+                        + "<project>"
+                        + "<groupId>test</groupId>"
+                        + "<artifactId>test</artifactId>"
+                        + "<version>1.0</version>"
+                        + "<notAValidElement>whatever</notAValidElement>"
+                        + "</project>"
+                        + "</supplement>"
+                        + "</supplementalDataModels>");
+
+        setVariableValueToObject(mojo, "supplementalModels", new String[] 
{supplementalModelsFile.getAbsolutePath()});
+
+        mojo.execute();
+    }
+
     public void testCreateBundle() throws Exception {
         List<String> resources =
                 Arrays.asList("FILTER.txt.vm", "ISO-8859-1.bin.vm", 
"PROPERTIES.txt.vm", "SIMPLE.txt", "UTF-8.bin.vm");

Reply via email to