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 b4034c9377133ea61e3556edf5583503906e218e
Author: Elliotte Rusty Harold <[email protected]>
AuthorDate: Sun Aug 2 11:37:31 2026 +0000

    Fail with MojoExecutionException on malformed supplemental model (#266)
---
 .../remote/AbstractProcessRemoteResourcesMojo.java | 10 ++----
 .../resources/remote/RemoteResourcesMojoTest.java  | 39 ++++++++++++----------
 2 files changed, 25 insertions(+), 24 deletions(-)

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 6b43167..d1062ee 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
@@ -1096,7 +1096,7 @@ public abstract class AbstractProcessRemoteResourcesMojo 
extends AbstractMojo {
 
     protected Model getSupplement(Xpp3Dom supplementModelXml) throws 
MojoExecutionException {
         MavenXpp3Reader modelReader = new MavenXpp3Reader();
-        Model model = null;
+        Model model;
 
         try {
             model = modelReader.read(new 
StringReader(supplementModelXml.toString()));
@@ -1113,9 +1113,9 @@ public abstract class AbstractProcessRemoteResourcesMojo 
extends AbstractMojo {
                         "Supplemental project XML " + "requires that a 
<artifactId> element be present.");
             }
         } catch (IOException e) {
-            getLog().warn("Unable to read supplemental XML: " + 
e.getMessage(), e);
+            throw new MojoExecutionException("Unable to read supplemental XML: 
" + e.getMessage(), e);
         } catch (XmlPullParserException e) {
-            getLog().warn("Unable to parse supplemental XML: " + 
e.getMessage(), e);
+            throw new MojoExecutionException("Unable to parse supplemental 
XML: " + e.getMessage(), e);
         }
 
         return model;
@@ -1170,10 +1170,6 @@ 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 28cf447..b812148 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
@@ -208,22 +208,7 @@ public class RemoteResourcesMojoTest extends 
AbstractMojoTestCase {
         }
     }
 
-    public void testConfigureLocatorRequiresProjectFile() throws Exception {
-        final MavenProjectResourcesStub project = 
createTestProject("default-null-pom");
-        final ProcessRemoteResourcesMojo mojo = 
lookupProcessMojoWithDefaultSettings(project);
-
-        setupDefaultProject(project);
-        project.setFile(null);
-
-        try {
-            mojo.execute();
-            fail("expected MojoExecutionException when the project has no POM 
file");
-        } catch (MojoExecutionException e) {
-            assertTrue(e.getMessage().contains("no POM file"));
-        }
-    }
-
-    public void testMalformedSupplementalModelDoesNotBreakBuild() throws 
Exception {
+    public void 
testMalformedSupplementalModelFailsWithMojoExecutionException() throws 
Exception {
         final MavenProjectResourcesStub project = 
createTestProject("default-malformedsupplement");
         final ProcessRemoteResourcesMojo mojo = 
lookupProcessMojoWithDefaultSettings(project);
 
@@ -245,7 +230,27 @@ public class RemoteResourcesMojoTest extends 
AbstractMojoTestCase {
 
         setVariableValueToObject(mojo, "supplementalModels", new String[] 
{supplementalModelsFile.getAbsolutePath()});
 
-        mojo.execute();
+        try {
+            mojo.execute();
+            fail("Expected a MojoExecutionException for a malformed 
supplemental model entry");
+        } catch (MojoExecutionException e) {
+            assertTrue(e.getMessage(), e.getMessage().contains("Unable to 
parse supplemental XML"));
+        }
+    }
+
+    public void testConfigureLocatorRequiresProjectFile() throws Exception {
+        final MavenProjectResourcesStub project = 
createTestProject("default-null-pom");
+        final ProcessRemoteResourcesMojo mojo = 
lookupProcessMojoWithDefaultSettings(project);
+
+        setupDefaultProject(project);
+        project.setFile(null);
+
+        try {
+            mojo.execute();
+            fail("expected MojoExecutionException when the project has no POM 
file");
+        } catch (MojoExecutionException e) {
+            assertTrue(e.getMessage().contains("no POM file"));
+        }
     }
 
     public void testCreateBundle() throws Exception {

Reply via email to