in src/main/java/org/apache/sling/feature/maven/mojos/AbstractRepositoryMojo.java [76:114]
protected void processFeature(final File artifactDir, final Feature f) throws MojoExecutionException {
for(final org.apache.sling.feature.Artifact artifact : f.getBundles()) {
copyArtifactToRepository(artifact.getId(), artifactDir);
}
for(final Extension ext : f.getExtensions()) {
if ( ext.getType() == ExtensionType.ARTIFACTS ) {
for(final org.apache.sling.feature.Artifact artifact : ext.getArtifacts()) {
copyArtifactToRepository(artifact.getId(), artifactDir);
}
}
}
final ExecutionEnvironmentExtension eee = ExecutionEnvironmentExtension.getExecutionEnvironmentExtension(f);
if ( eee != null && eee.getFramework() != null ) {
copyArtifactToRepository(eee.getFramework().getId(), artifactDir);
}
final File featureFile = getRepositoryFile(artifactDir, f.getId());
featureFile.getParentFile().mkdirs();
try ( final Writer writer = new FileWriter(featureFile)) {
FeatureJSONWriter.write(writer, f);
} catch (final IOException e) {
throw new MojoExecutionException("Unable to write feature file :" + f.getId().toMvnId(), e);
}
if ( f.getPrototype() != null ) {
if (ProjectHelper.isLocalProjectArtifact(this.project, f.getPrototype().getId())) {
final Feature prototype = this.getLocalFeature(f.getPrototype().getId());
if (prototype == null) {
throw new MojoExecutionException(
"Unable to find project feature " + f.getPrototype().getId().toMvnId());
}
processFeature(artifactDir, prototype);
} else {
final Feature prototype = ProjectHelper.getOrResolveFeature(project, mavenSession, artifactHandlerManager,
repoSystem, f.getPrototype().getId());
processFeature(artifactDir, prototype);
}
}
}