in src/main/java/org/apache/sling/scriptingbundle/plugin/bnd/BundledScriptsScannerPlugin.java [62:117]
public boolean analyzeJar(Analyzer analyzer) throws Exception {
logger = new BndLogger(reporter);
boolean inContentPackage = "content-package".equals(analyzer.get("project.packaging"));
Path workDirectory = Paths.get(analyzer.get(PROJECT_BUILD_FOLDER), "scriptingbundle-maven-plugin");
Files.createDirectories(workDirectory);
Set<PathMatcher> includes = getConfiguredIncludes();
Set<PathMatcher> excludes = getConfiguredExcludes();
getConfiguredSourceDirectories().stream().map(sourceDirectory -> {
Path sourceDirectoryPath = Paths.get(sourceDirectory);
if (!Files.exists(sourceDirectoryPath)) {
sourceDirectoryPath = Paths.get(analyzer.get(PROJECT_ROOT_FOLDER), sourceDirectory);
}
return sourceDirectoryPath;
}).filter(sourceDirectoryPath -> Files.exists(sourceDirectoryPath) && Files.isDirectory(sourceDirectoryPath)).forEach(sourceDirectoryPath -> {
try (Stream<Path> includedFiles = walkPath(sourceDirectoryPath, includes, excludes)) {
includedFiles.forEach(
file -> {
try {
if (!Files.isDirectory(file)) {
Path workingCopy = Paths.get(workDirectory.toString(), sourceDirectoryPath.relativize(file).toString());
Files.createDirectories(workingCopy.getParent());
Files.copy(file, workingCopy, StandardCopyOption.REPLACE_EXISTING);
}
} catch (IOException e) {
logger.error("Cannot copy file into working directory.", e);
}
}
);
} catch (IOException e) {
logger.error("Cannot analyse source folders.", e);
}
});
scriptEngineMappings = getConfiguredScriptEngineMappings();
capabilities = Capabilities
.fromFileSystemTree(workDirectory, walkPath(workDirectory, includes, excludes), logger,
getConfiguredSearchPaths(), scriptEngineMappings, getMissingRequirementsOptional(), inContentPackage);
String providedCapabilitiesDefinition = capabilities.getProvidedCapabilitiesString();
String requiredCapabilitiesDefinition = capabilities.getRequiredCapabilitiesString();
String providedCapabilities = analyzer.get(aQute.bnd.osgi.Constants.PROVIDE_CAPABILITY);
if (StringUtils.isNotEmpty(providedCapabilities)) {
providedCapabilities += ", " + providedCapabilitiesDefinition;
} else {
providedCapabilities = providedCapabilitiesDefinition;
}
analyzer.set(aQute.bnd.osgi.Constants.PROVIDE_CAPABILITY, providedCapabilities);
String requiredCapabilities = analyzer.get(aQute.bnd.osgi.Constants.REQUIRE_CAPABILITY);
if (StringUtils.isNotEmpty(requiredCapabilities)) {
requiredCapabilities += ", " + requiredCapabilitiesDefinition;
} else {
requiredCapabilities = requiredCapabilitiesDefinition;
}
analyzer.set(aQute.bnd.osgi.Constants.REQUIRE_CAPABILITY, requiredCapabilities);
return false;
}