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");
