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