in src/main/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReader.java [84:153]
public List<Assembly> readAssemblies(final AssemblerConfigurationSource configSource)
throws AssemblyReadException, InvalidAssemblerConfigurationException {
final Locator locator = new Locator();
final List<LocatorStrategy> strategies = new ArrayList<>();
strategies.add(new RelativeFileLocatorStrategy(configSource.getBasedir()));
strategies.add(new FileLocatorStrategy());
final List<LocatorStrategy> refStrategies = new ArrayList<>();
refStrategies.add(new PrefixedClasspathLocatorStrategy("/assemblies/"));
final List<Assembly> assemblies = new ArrayList<>();
final String[] descriptors = configSource.getDescriptors();
final String[] descriptorRefs = configSource.getDescriptorReferences();
final File descriptorSourceDirectory = configSource.getDescriptorSourceDirectory();
if ((descriptors != null) && (descriptors.length > 0)) {
locator.setStrategies(strategies);
for (String descriptor1 : descriptors) {
LOGGER.info("Reading assembly descriptor: " + descriptor1);
addAssemblyFromDescriptor(descriptor1, locator, configSource, assemblies);
}
}
if ((descriptorRefs != null) && (descriptorRefs.length > 0)) {
locator.setStrategies(refStrategies);
for (String descriptorRef : descriptorRefs) {
addAssemblyForDescriptorReference(descriptorRef, configSource, assemblies);
}
}
if ((descriptorSourceDirectory != null) && descriptorSourceDirectory.isDirectory()) {
// CHECKSTYLE_OFF: LineLength
locator.setStrategies(Collections.<LocatorStrategy>singletonList(
new RelativeFileLocatorStrategy(descriptorSourceDirectory)));
// CHECKSTYLE_ON: LineLength
final DirectoryScanner scanner = new DirectoryScanner();
scanner.setBasedir(descriptorSourceDirectory);
scanner.setIncludes(new String[] {"**/*.xml"});
scanner.addDefaultExcludes();
scanner.scan();
final String[] paths = scanner.getIncludedFiles();
for (String path : paths) {
addAssemblyFromDescriptor(path, locator, configSource, assemblies);
}
}
if (assemblies.isEmpty()) {
if (configSource.isIgnoreMissingDescriptor()) {
LOGGER.debug("Ignoring missing assembly descriptors per configuration. "
+ "See messages above for specifics.");
} else {
throw new AssemblyReadException("No assembly descriptors found.");
}
}
// check unique IDs
final Set<String> ids = new HashSet<>();
for (final Assembly assembly : assemblies) {
if (!ids.add(assembly.getId())) {
LOGGER.warn("The assembly id " + assembly.getId() + " is used more than once.");
}
}
return assemblies;
}