private TransformableFilter createPurgeArtifactsFilter()

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