diff --git a/src/main/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilter.java b/src/main/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilter.java index 4d212a9..e51f462 100644 --- a/src/main/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilter.java +++ b/src/main/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilter.java @@ -85,7 +85,7 @@ public PatternIncludesArtifactFilter(final Collection patterns, final bo this.actTransitively = actTransitively; final Set pat = new LinkedHashSet<>(); if (patterns != null && !patterns.isEmpty()) { - for (String pattern : patterns) { + for (String pattern : new LinkedHashSet<>(patterns)) { Pattern p = compile(pattern); pat.add(p); } diff --git a/src/test/java/org/apache/maven/shared/artifact/filter/AbstractPatternArtifactFilterTest.java b/src/test/java/org/apache/maven/shared/artifact/filter/AbstractPatternArtifactFilterTest.java index 724fb05..fa22d81 100644 --- a/src/test/java/org/apache/maven/shared/artifact/filter/AbstractPatternArtifactFilterTest.java +++ b/src/test/java/org/apache/maven/shared/artifact/filter/AbstractPatternArtifactFilterTest.java @@ -506,6 +506,23 @@ public void checkMassembly955() { } } + @Test + public void shouldNotReportDuplicateMatchingPatternsAsMissed() { + Artifact artifact = mock(Artifact.class); + when(artifact.getGroupId()).thenReturn("org.python"); + when(artifact.getArtifactId()).thenReturn("jython-standalone"); + when(artifact.getType()).thenReturn("jar"); + when(artifact.getBaseVersion()).thenReturn("1.0"); + + String pattern = "org.python:jython-standalone"; + ArtifactFilter filter = createFilter(Arrays.asList(pattern, pattern)); + StatisticsReportingArtifactFilter statistics = (StatisticsReportingArtifactFilter) filter; + + assertTrue(statistics.hasMissedCriteria()); + filter.include(artifact); + assertFalse(statistics.hasMissedCriteria()); + } + @Test public void partialWildcardShouldNotMatchEmptyComponent() { Artifact artifact = mock(Artifact.class);