in src/main/java/org/apache/maven/plugins/dependency/PurgeLocalRepositoryMojo.java [450:492]
private TransformableFilter createPurgeArtifactsFilter(
MavenProject theProject, List<Dependency> dependencies, Set<Artifact> purgedArtifacts) {
List<TransformableFilter> subFilters = new ArrayList<>();
// System dependencies should never be purged
subFilters.add(ScopeFilter.excluding(Artifact.SCOPE_SYSTEM));
if (this.snapshotsOnly) {
subFilters.add(new SnapshotsFilter());
}
// The CLI includes/excludes overrides configuration in the pom
if (!(this.include == null || this.include.isEmpty())) {
this.includes = parseIncludes(this.include);
}
if (this.includes != null) {
subFilters.add(new PatternInclusionsFilter(includes));
}
if (!(this.exclude == null || this.exclude.isEmpty())) {
this.excludes = parseIncludes(this.exclude);
}
if (this.excludes != null) {
subFilters.add(new PatternExclusionsFilter(excludes));
}
if (!actTransitively) {
subFilters.add(new DirectDependencyFilter(theProject.getArtifact(), dependencies));
}
List<String> exclusions = new ArrayList<>(reactorProjects.size());
// It doesn't make sense to include projects from the reactor here since they're likely not able to be resolved
for (MavenProject reactorProject : reactorProjects) {
exclusions.add(toPatternExcludes(reactorProject.getArtifact()));
}
// There is no need to consider a second time artifacts that were already purged (re-resolved or not)
for (Artifact purgedArtifact : purgedArtifacts) {
exclusions.add(toPatternExcludes(purgedArtifact));
}
subFilters.add(new PatternExclusionsFilter(exclusions));
return new AndFilter(subFilters);
}