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 {
