public List readAssemblies()

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