private void copyDirectoryStructure()

in src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java [1224:1251]


    private void copyDirectoryStructure(File sourceDir, File destDir) throws IOException {
        DirectoryScanner scanner = new DirectoryScanner();
        scanner.setBasedir(sourceDir);
        if (!cloneAllFiles) {
            scanner.addDefaultExcludes();
        }
        scanner.scan();

        /*
         * NOTE: Make sure the destination directory is always there (even if empty) to support POM-less ITs.
         */
        Files.createDirectories(destDir.toPath());
        // Create all the directories, including any symlinks present in source
        FileUtils.mkDirs(sourceDir, scanner.getIncludedDirectories(), destDir);

        for (String includedFile : scanner.getIncludedFiles()) {
            File sourceFile = new File(sourceDir, includedFile);
            File destFile = new File(destDir, includedFile);
            if (NioFiles.isSymbolicLink(sourceFile)) {
                NioFiles.createSymbolicLink(destFile, NioFiles.readSymbolicLink(sourceFile));
            } else {
                FileUtils.copyFile(sourceFile, destFile);
            }

            // ensure clone project must be writable for additional changes
            destFile.setWritable(true);
        }
    }