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