use of org.apache.felix.scrplugin.Result in project felix by apache.
the class SCRDescriptorBndPlugin method analyzeJar.
/**
* Scan scr or ds annotation from the target jar.
*/
public boolean analyzeJar(Analyzer analyzer) throws Exception {
this.log = new BndLog(reporter, analyzer, parseOption(properties, LOGTOFILE, false));
try {
init(analyzer);
log.info("Analyzing " + analyzer.getBsn());
final org.apache.felix.scrplugin.Project project = new org.apache.felix.scrplugin.Project();
project.setClassLoader(new URLClassLoader(getClassPath(analyzer), this.getClass().getClassLoader()));
project.setDependencies(getDependencies(analyzer));
project.setSources(getClassFiles(analyzer));
project.setClassesDirectory(destDir.getAbsolutePath());
// create options
final Options options = new Options();
options.setOutputDirectory(destDir);
options.setGenerateAccessors(generateAccessor);
options.setStrictMode(strictMode);
options.setProperties(new HashMap<String, String>());
options.setSpecVersion(specVersion);
final SCRDescriptorGenerator generator = new SCRDescriptorGenerator(log);
// setup from plugin configuration
generator.setOptions(options);
generator.setProject(project);
Result r = generator.execute();
// Embed scr descriptors in target jar
List<String> scrFiles = r.getScrFiles();
if (scrFiles != null) {
StringBuilder sb = new StringBuilder();
for (String scrFile : scrFiles) {
log.info("SCR descriptor result file: " + scrFile);
sb.append(scrFile);
sb.append(",");
putResource(analyzer, scrFile);
}
sb.setLength(sb.length() - 1);
addServiceComponentHeader(analyzer, sb.toString());
}
// Embed metatype descriptors in target jar
List<String> metaTypeFiles = r.getMetatypeFiles();
if (metaTypeFiles != null) {
for (String metaTypeFile : metaTypeFiles) {
log.info("Meta Type result file: " + metaTypeFile);
putResource(analyzer, metaTypeFile);
}
}
} catch (Throwable t) {
log.error("Got unexpected exception while analyzing", t);
} finally {
log.close();
}
// do not reanalyze bundle classpath because our plugin has not changed it.
return false;
}
use of org.apache.felix.scrplugin.Result in project felix by apache.
the class SCRDescriptorMojo method execute.
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
final String projectType = project.getArtifact().getType();
// ignore unsupported project types, useful when bundleplugin is configured in parent pom
if (!supportedProjectTypes.contains(projectType)) {
getLog().debug("Ignoring project type " + projectType + " - supportedProjectTypes = " + supportedProjectTypes);
return;
}
// create the log for the generator
final org.apache.felix.scrplugin.Log scrLog = new MavenLog(getLog(), buildContext);
// create project
final MavenProjectScanner scanner = new MavenProjectScanner(this.buildContext, this.project, this.sourceIncludes, this.sourceExcludes, this.scanClasses, scrLog);
final Project project = new Project();
// create the class loader
project.setClassLoader(new URLClassLoader(getClassPath(), this.getClass().getClassLoader()));
project.setDependencies(scanner.getDependencies());
project.setSources(scanner.getSources());
project.setClassesDirectory(this.project.getBuild().getOutputDirectory());
// create options
final Options options = new Options();
options.setOutputDirectory(outputDirectory);
options.setGenerateAccessors(generateAccessors);
options.setStrictMode(strictMode);
options.setProperties(properties);
options.setSpecVersion(SpecVersion.fromName(specVersion));
options.setIncremental(this.buildContext.isIncremental());
options.setSkipVolatileCheck(this.skipVolatileCheck);
if (specVersion != null && options.getSpecVersion() == null) {
throw new MojoExecutionException("Unknown spec version specified: " + specVersion);
}
try {
final SCRDescriptorGenerator generator = new SCRDescriptorGenerator(scrLog);
// setup from plugin configuration
generator.setOptions(options);
generator.setProject(project);
this.removePossiblyStaleFiles(scanner.getSources(), options);
final Result result = generator.execute();
this.setServiceComponentHeader(options);
if (!this.updateProjectResources()) {
this.setIncludeResourceHeader(options);
}
this.cleanUpDeletedSources(scanner.getDeletedSources(), options);
this.refreshMessages(result.getProcessedSourceFiles());
this.updateBuildContext(result);
} catch (final SCRDescriptorException sde) {
throw new MojoExecutionException(sde.getSourceLocation() + " : " + sde.getMessage(), sde);
} catch (final SCRDescriptorFailureException sdfe) {
throw (MojoFailureException) new MojoFailureException(sdfe.getMessage()).initCause(sdfe);
}
}
Aggregations