private void doAddFileSet()

in src/main/java/org/apache/maven/plugins/assembly/archive/archiver/AssemblyProxyArchiver.java [602:644]


    private void doAddFileSet(final FileSet fs) {
        final String fsPath = fs.getDirectory().getAbsolutePath().replace('\\', '/');

        if (fsPath.equals(assemblyWorkPath)) {
            LOGGER.debug("SKIPPING fileset with source directory matching assembly working-directory: " + fsPath);
        } else if (assemblyWorkPath.startsWith(fsPath)) {
            final List<String> newEx = new ArrayList<>();
            if (fs.getExcludes() != null) {
                newEx.addAll(Arrays.asList(fs.getExcludes()));
            }

            final String workDirExclude = assemblyWorkPath.substring(fsPath.length() + 1);

            LOGGER.debug("Adding exclude for assembly working-directory: " + workDirExclude
                    + "\nFile-Set source directory: " + fsPath);

            newEx.add(workDirExclude);

            final List<String> newIn = new ArrayList<>();
            if (fs.getIncludes() != null) {
                for (final String include : fs.getIncludes()) {
                    if (!include.startsWith(workDirExclude)) {
                        newIn.add(include);
                    }
                }
            }

            final DefaultFileSet dfs = new DefaultFileSet();

            dfs.setCaseSensitive(fs.isCaseSensitive());
            dfs.setDirectory(fs.getDirectory());
            dfs.setExcludes(newEx.toArray(new String[0]));
            dfs.setFileSelectors(fs.getFileSelectors());
            dfs.setIncludes(newIn.toArray(new String[0]));
            dfs.setIncludingEmptyDirectories(fs.isIncludingEmptyDirectories());
            dfs.setPrefix(fs.getPrefix());
            dfs.setStreamTransformer(fs.getStreamTransformer());

            delegate.addFileSet(dfs);
        } else {
            delegate.addFileSet(fs);
        }
    }