in src/main/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTask.java [85:157]
void addFileSet(
final FileSet fileSet,
final Archiver archiver,
final AssemblerConfigurationSource configSource,
final File archiveBaseDir)
throws AssemblyFormattingException, ArchiveCreationException {
if (project == null) {
project = configSource.getProject();
}
final File basedir = project.getBasedir();
String destDirectory = fileSet.getOutputDirectory();
if (destDirectory == null) {
destDirectory = fileSet.getDirectory();
AssemblyFormatUtils.warnForPlatformSpecifics(LOGGER, destDirectory);
}
destDirectory = AssemblyFormatUtils.getOutputDirectory(
destDirectory,
configSource.getFinalName(),
configSource,
AssemblyFormatUtils.moduleProjectInterpolator(moduleProject),
AssemblyFormatUtils.artifactProjectInterpolator(project));
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("FileSet[" + destDirectory + "]" + " dir perms: "
+ Integer.toString(archiver.getOverrideDirectoryMode(), 8) + " file perms: "
+ Integer.toString(archiver.getOverrideFileMode(), 8)
+ (fileSet.getLineEnding() == null ? "" : " lineEndings: " + fileSet.getLineEnding()));
}
LOGGER.debug("The archive base directory is '" + archiveBaseDir + "'");
File fileSetDir = getFileSetDirectory(fileSet, basedir, archiveBaseDir);
if (fileSetDir.exists()) {
InputStreamTransformer fileSetTransformers = ReaderFormatter.getFileSetTransformers(
configSource,
fileSet.isFiltered(),
new HashSet<>(fileSet.getNonFilteredFileExtensions()),
fileSet.getLineEnding());
if (fileSetTransformers == null) {
LOGGER.debug("NOT reformatting any files in " + fileSetDir);
}
if (fileSetDir.getPath().equals(File.separator)) {
throw new AssemblyFormattingException(
"Your assembly descriptor specifies a directory of " + File.separator
+ ", which is your *entire* file system.\nThese are not the files you are looking for");
}
final AddDirectoryTask task = new AddDirectoryTask(fileSetDir, fileSetTransformers);
final int dirMode = TypeConversionUtils.modeToInt(fileSet.getDirectoryMode(), LOGGER);
if (dirMode != -1) {
task.setDirectoryMode(dirMode);
}
final int fileMode = TypeConversionUtils.modeToInt(fileSet.getFileMode(), LOGGER);
if (fileMode != -1) {
task.setFileMode(fileMode);
}
task.setUseDefaultExcludes(fileSet.isUseDefaultExcludes());
task.setExcludes(fileSet.getExcludes());
task.setIncludes(fileSet.getIncludes());
task.setOutputDirectory(destDirectory);
task.execute(archiver);
}
}