public void execute()

in src/main/java/org/apache/sling/scriptingbundle/plugin/maven/MetadataMojo.java [180:242]


    public void execute() {
        boolean inContentPackage = "content-package".equals(project.getPackaging());
        Logger logger = new MavenLogger(getLog());
        Path workDirectory = Paths.get(project.getBuild().getDirectory(), "scriptingbundle-maven-plugin");
        try {
            Files.createDirectories(workDirectory);
            if (sourceDirectories.isEmpty()) {
                sourceDirectories = new HashSet<>(Constants.DEFAULT_SOURCE_DIRECTORIES);
            }
            sourceDirectories.stream().map(sourceDirectory -> {
                Path sourceDirectoryPath = Paths.get(sourceDirectory);
                if (!Files.exists(sourceDirectoryPath)) {
                    sourceDirectoryPath = Paths.get(project.getBasedir().getAbsolutePath(), sourceDirectory);
                }
                return sourceDirectoryPath;
            }).filter(sourceDirectory -> Files.exists(sourceDirectory) && Files.isDirectory(sourceDirectory)).forEach(sourceDirectoryPath -> {
                DirectoryScanner scanner = getDirectoryScanner(sourceDirectoryPath.toFile());
                Arrays.stream(scanner.getIncludedFiles()).map(sourceDirectoryPath::resolve).forEach(
                        file -> {
                            try {
                                if (!Files.isDirectory(file)) {
                                    Path workingCopy = workDirectory.resolve(sourceDirectoryPath.relativize(file));
                                    Files.createDirectories(workingCopy.getParent());
                                    Files.copy(file, workingCopy, StandardCopyOption.REPLACE_EXISTING);
                                }
                            } catch (IOException e) {
                                logger.error("Cannot copy file into working directory.", e);
                            }
                        }
                );
            });
            Map<String, String> mappings = new HashMap<>(Constants.DEFAULT_EXTENSION_TO_SCRIPT_ENGINE_MAPPING);
            if (scriptEngineMappings != null) {
                mappings.putAll(scriptEngineMappings);
            }
            scriptEngineMappings = mappings;
            if (searchPaths == null || searchPaths.isEmpty()) {
                searchPaths = Constants.DEFAULT_SEARCH_PATHS;
            }
            DirectoryScanner scanner = getDirectoryScanner(workDirectory.toFile());
            List<String> scannerPaths = new ArrayList<>(Arrays.asList(scanner.getIncludedFiles()));
            for (String file : scanner.getIncludedFiles()) {
                scannerPaths.add(FilenameUtils.getFullPath(file));
            }
            capabilities = Capabilities.fromFileSystemTree(
                workDirectory,
                scannerPaths.stream().map(workDirectory::resolve),
                logger,
                searchPaths,
                scriptEngineMappings,
                missingRequirementsOptional,
                inContentPackage
            );
            String providedCapabilitiesDefinition = capabilities.getProvidedCapabilitiesString();
            String requiredCapabilitiesDefinition = capabilities.getRequiredCapabilitiesString();
            project.getProperties().put("org.apache.sling.scriptingbundle.maven.plugin." + org.osgi.framework.Constants.PROVIDE_CAPABILITY,
                    providedCapabilitiesDefinition);
            project.getProperties().put("org.apache.sling.scriptingbundle.maven.plugin." + org.osgi.framework.Constants.REQUIRE_CAPABILITY,
                    requiredCapabilitiesDefinition);
        } catch (IOException e) {
            logger.error("Unable to generate working directory.", e);
        }
    }