diff --git a/src/main/java/org/apache/maven/plugins/war/overlay/OverlayManager.java b/src/main/java/org/apache/maven/plugins/war/overlay/OverlayManager.java index bf4193bf..48c6e6ec 100644 --- a/src/main/java/org/apache/maven/plugins/war/overlay/OverlayManager.java +++ b/src/main/java/org/apache/maven/plugins/war/overlay/OverlayManager.java @@ -203,7 +203,7 @@ private boolean compareOverlayWithArtifact(Overlay overlay, Artifact artifact) { && Objects.equals(overlay.getType(), artifact.getType()) // MWAR-241 Make sure to treat null and "" as equal when comparing the classifier && Objects.equals( - Objects.toString(overlay.getClassifier()), Objects.toString(artifact.getClassifier()))); + Objects.toString(overlay.getClassifier(), ""), Objects.toString(artifact.getClassifier(), ""))); } /** diff --git a/src/test/java/org/apache/maven/plugins/war/overlay/OverlayManagerTest.java b/src/test/java/org/apache/maven/plugins/war/overlay/OverlayManagerTest.java index 68ba8b2a..84fec1f0 100644 --- a/src/test/java/org/apache/maven/plugins/war/overlay/OverlayManagerTest.java +++ b/src/test/java/org/apache/maven/plugins/war/overlay/OverlayManagerTest.java @@ -31,6 +31,7 @@ import static org.apache.maven.plugins.war.Overlay.DEFAULT_INCLUDES; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertThrows; /** @@ -125,6 +126,27 @@ void testCustomCurrentProject() throws Exception { assertEquals(new DefaultOverlay(second), manager.getOverlays().get(2)); } + @Test + void testNullClassifierMatchesEmptyClassifier() throws Exception { + final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub(); + final ArtifactStub artifact = newWarArtifact("test", "test-webapp", ""); + project.addArtifact(artifact); + + final List overlays = new ArrayList<>(); + Overlay overlay = new Overlay("test", "test-webapp"); + overlay.setClassifier(null); + overlay.setType("war"); + overlays.add(overlay); + + final Overlay currentProjectOverlay = Overlay.createInstance(); + OverlayManager manager = + new OverlayManager(overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES, currentProjectOverlay); + assertNotNull(manager.getOverlays()); + assertEquals(2, manager.getOverlays().size()); + assertEquals(currentProjectOverlay, manager.getOverlays().get(0)); + assertSame(artifact, manager.getOverlays().get(1).getArtifact()); + } + @Test void testOverlaysWithSameArtifactAndGroupId() throws Exception {