protected void addFileSetToArchive()

in src/main/java/org/apache/jackrabbit/filevault/maven/packaging/mojo/VaultMojo.java [304:350]


    protected void addFileSetToArchive(MavenResourcesExecution mavenResourcesExecution, ContentPackageArchiver archiver, DefaultFileSet fileSet) throws MavenFilteringException {
        // ignore directories added with no prefix (workDirectory)
        String prefix = fileSet.getPrefix();
        if (prefix != null && ((prefix.startsWith(Constants.ROOT_DIR) && enableJcrRootFiltering) ||
            (prefix.startsWith(Constants.META_INF) && enableMetaInfFiltering))) {
            getLog().info("Apply filtering to FileSet below " + getProjectRelativeFilePath(fileSet.getDirectory()));
            Resource filteringSourceResource = new Resource();
            filteringSourceResource.setDirectory(fileSet.getDirectory().getPath());
            
            // since allow lists (i.e. only filtering specific extensions) is not natively supported
            // split up the fileSet
            if (filteredFilePatterns != null && !filteredFilePatterns.isEmpty()) {
                if (fileSet.getIncludes() != null) {
                    throw new IllegalStateException("FileSet can not have includes set, as those are used for filteredFileExtensions");
                }
                // create an additional file set with unfiltered files
                DefaultFileSet unfilteredFileSet = cloneFileSet(fileSet);
                
                // add all filtered file patterns to excludes
                String[] excludes = Stream.of(Arrays.asList(fileSet.getExcludes()), filteredFilePatterns).flatMap(x -> x.stream()).toArray(String[]::new);
                unfilteredFileSet.setExcludes(excludes);
                
                getLog().debug("Adding unfiltered fileSet '" + getString(unfilteredFileSet) + "' to package");
                archiver.addFileSet(unfilteredFileSet);
                filteringSourceResource.setIncludes(filteredFilePatterns);
            } else {
                if (fileSet.getIncludes() != null) {
                    filteringSourceResource.setIncludes(Arrays.asList(fileSet.getIncludes()));
                }
            }
           
            if (fileSet.getExcludes() != null) {
                filteringSourceResource.setExcludes(Arrays.asList(fileSet.getExcludes()));
                // default exclude are managed via mavenResourcesExecution
            }
            filteringSourceResource.setFiltering(true);
            File newTargetDirectory = applyFiltering(fileSet.getPrefix(), mavenResourcesExecution, filteringSourceResource);
            if (newTargetDirectory.exists()) {
                fileSet.setDirectory(newTargetDirectory);
                getLog().debug("Adding filtered fileSet '" + getString(fileSet) + "' to package");
                archiver.addFileSet(fileSet);
            }
        } else {
            getLog().debug("Adding fileSet '" + getString(fileSet) + "' to package");
            archiver.addFileSet(fileSet);
        }
    }