You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2026/10/13 20:28:54 UTC
(maven-common-artifact-filters) branch master updated: [MASSEMBLY-970] Deduplicate artifact filter patterns
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-common-artifact-filters.git
The following commit(s) were added to refs/heads/master by this push:
new e7ff628 [MASSEMBLY-970] Deduplicate artifact filter patterns
e7ff628 is described below
commit e7ff628c2682ec9b37685be82a04074d87121af3
Author: Vaclav Haisman <vh...@gmail.com>
AuthorDate: Mon Jul 27 22:50:29 2026 +0200
[MASSEMBLY-970] Deduplicate artifact filter patterns
Duplicate input strings were compiled into distinct Pattern instances. Matching one instance therefore left equivalent duplicates untriggered and caused strict downstream filters to fail.
Fixes apache/maven-assembly-plugin#1178
---
.../artifact/filter/PatternIncludesArtifactFilter.java | 2 +-
.../filter/AbstractPatternArtifactFilterTest.java | 17 +++++++++++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
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 class PatternIncludesArtifactFilter implements ArtifactFilter, Statistics
this.actTransitively = actTransitively;
final Set<Pattern> 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 abstract class AbstractPatternArtifactFilterTest {
}
}
+ @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);