in src/main/java/org/apache/maven/shared/model/fileset/util/FileSetManager.java [201:260]
public void delete(FileSet fileSet, boolean throwsError) throws IOException {
Set<String> deletablePaths = findDeletablePaths(fileSet);
if (logger.isDebugEnabled()) {
String paths = String.valueOf(deletablePaths).replace(',', '\n');
logger.debug("Found deletable paths: " + paths);
}
List<String> warnMessages = new LinkedList<>();
for (String path : deletablePaths) {
File file = new File(fileSet.getDirectory(), path);
if (file.exists()) {
if (file.isDirectory()) {
if (fileSet.isFollowSymlinks() || !Files.isSymbolicLink(file.toPath())) {
if (verbose) {
logger.info("Deleting directory: " + file);
}
removeDir(file, fileSet.isFollowSymlinks(), throwsError, warnMessages);
} else { // delete a symlink to a directory without follow
if (verbose) {
logger.info("Deleting symlink to directory: " + file);
}
if (!file.delete()) {
String message = "Unable to delete symlink " + file.getAbsolutePath();
if (throwsError) {
throw new IOException(message);
}
if (!warnMessages.contains(message)) {
warnMessages.add(message);
}
}
}
} else {
if (verbose) {
logger.info("Deleting file: " + file);
}
if (!FileUtils.deleteQuietly(file)) {
String message = "Failed to delete file " + file.getAbsolutePath() + ". Reason is unknown.";
if (throwsError) {
throw new IOException(message);
}
warnMessages.add(message);
}
}
}
}
if (logger.isWarnEnabled() && !throwsError && (warnMessages.size() > 0)) {
for (String warnMessage : warnMessages) {
logger.warn(warnMessage);
}
}
}