in src/main/java/org/apache/maven/plugins/assembly/utils/FilterUtils.java [91:158]
public static void filterArtifacts(
final Set<Artifact> artifacts,
final List<String> includes,
final List<String> excludes,
final boolean strictFiltering,
final boolean actTransitively,
final Logger logger,
final ArtifactFilter... additionalFilters)
throws InvalidAssemblerConfigurationException {
final List<ArtifactFilter> allFilters = new ArrayList<>();
final AndArtifactFilter filter = new AndArtifactFilter();
if (additionalFilters != null && additionalFilters.length > 0) {
for (final ArtifactFilter additionalFilter : additionalFilters) {
if (additionalFilter != null) {
filter.add(additionalFilter);
}
}
}
if (!includes.isEmpty()) {
final ArtifactFilter includeFilter = new PatternIncludesArtifactFilter(includes, actTransitively);
filter.add(includeFilter);
allFilters.add(includeFilter);
}
if (!excludes.isEmpty()) {
final ArtifactFilter excludeFilter = new PatternExcludesArtifactFilter(excludes, actTransitively);
filter.add(excludeFilter);
allFilters.add(excludeFilter);
}
// FIXME: Why is this added twice??
// if ( additionalFilters != null && !additionalFilters.isEmpty() )
// {
// allFilters.addAll( additionalFilters );
// }
for (final Iterator<Artifact> it = artifacts.iterator(); it.hasNext(); ) {
final Artifact artifact = it.next();
if (!filter.include(artifact)) {
it.remove();
if (logger.isDebugEnabled()) {
logger.debug(artifact.getId() + " was removed by one or more filters.");
}
}
}
reportFilteringStatistics(allFilters, logger);
for (final ArtifactFilter f : allFilters) {
if (f instanceof StatisticsReportingArtifactFilter) {
final StatisticsReportingArtifactFilter sFilter = (StatisticsReportingArtifactFilter) f;
if (strictFiltering && sFilter.hasMissedCriteria()) {
throw new InvalidAssemblerConfigurationException(
"One or more filters had unmatched criteria. Check debug log for more information.");
}
}
}
}