in src/main/java/org/apache/sling/maven/slingstart/RepositoryMojo.java [74:165]
public void execute() throws MojoExecutionException, MojoFailureException {
final File artifactDir = new File(this.project.getBuild().getDirectory(), DIR_NAME);
this.getLog().info("Creating repository in '" + artifactDir.getPath() + "'...");
// artifacts
final Model model = ProjectHelper.getEffectiveModel(this.project, getResolverOptions());
for(final Feature feature : model.getFeatures()) {
for(final RunMode runMode : feature.getRunModes()) {
for(final ArtifactGroup group : runMode.getArtifactGroups()) {
for(final org.apache.sling.provisioning.model.Artifact artifact : group ) {
copyArtifactToRepository(artifact, artifactDir);
}
}
}
}
// base artifact - only if launchpad feature is available
if (model.getFeature(ModelConstants.FEATURE_LAUNCHPAD) != null) {
try {
final org.apache.sling.provisioning.model.Artifact baseArtifact = ModelUtils.findBaseArtifact(model);
final org.apache.sling.provisioning.model.Artifact appArtifact =
new org.apache.sling.provisioning.model.Artifact(baseArtifact.getGroupId(),
baseArtifact.getArtifactId(),
baseArtifact.getVersion(),
BuildConstants.CLASSIFIER_APP,
BuildConstants.TYPE_JAR);
copyArtifactToRepository(appArtifact, artifactDir);
} catch ( final MavenExecutionException mee) {
throw new MojoExecutionException(mee.getMessage(), mee.getCause());
}
}
// models
Model rawModel = ProjectHelper.getRawModel(this.project);
if (usePomVariables) {
rawModel = ModelUtility.applyVariables(rawModel, new PomVariableResolver(project));
}
if (usePomDependencies) {
rawModel = ModelUtility.applyArtifactVersions(rawModel, new PomArtifactVersionResolver(project, allowUnresolvedPomDependencies));
}
final String classifier = (project.getPackaging().equals(BuildConstants.PACKAGING_PARTIAL_SYSTEM) ? null : BuildConstants.PACKAGING_PARTIAL_SYSTEM);
final org.apache.sling.provisioning.model.Artifact rawModelArtifact =
new org.apache.sling.provisioning.model.Artifact(
this.project.getGroupId(),
this.project.getArtifactId(),
this.project.getVersion(),
classifier,
BuildConstants.TYPE_TXT);
final File rawModelFile = getRepositoryFile(artifactDir, rawModelArtifact);
Writer writer = null;
try {
writer = new FileWriter(rawModelFile);
ModelWriter.write(writer, rawModel);
} catch (IOException e) {
throw new MojoExecutionException("Unable to write model to " + rawModelFile, e);
} finally {
IOUtils.closeQuietly(writer);
}
// and write model to target
writer = null;
try {
writer = new FileWriter(new File(this.project.getBuild().getDirectory(), repositoryModelName));
ModelWriter.write(writer, rawModel);
} catch (IOException e) {
throw new MojoExecutionException("Unable to write model to " + rawModelFile, e);
} finally {
IOUtils.closeQuietly(writer);
}
for(final Map.Entry<String, String> entry : ProjectHelper.getDependencyModel(this.project).entrySet()) {
final org.apache.sling.provisioning.model.Artifact modelDepArtifact = org.apache.sling.provisioning.model.Artifact.fromMvnUrl(entry.getKey());
final String modelClassifier = (modelDepArtifact.getType().equals(BuildConstants.PACKAGING_SLINGSTART) ? BuildConstants.PACKAGING_PARTIAL_SYSTEM : modelDepArtifact.getClassifier());
final org.apache.sling.provisioning.model.Artifact modelArtifact = new org.apache.sling.provisioning.model.Artifact(
modelDepArtifact.getGroupId(),
modelDepArtifact.getArtifactId(),
modelDepArtifact.getVersion(),
modelClassifier,
BuildConstants.TYPE_TXT);
final File modelFile = getRepositoryFile(artifactDir, modelArtifact);
Writer modelWriter = null;
try {
modelWriter = new FileWriter(modelFile);
modelWriter.write(entry.getValue());
} catch (IOException e) {
throw new MojoExecutionException("Unable to write model to " + modelFile, e);
} finally {
IOUtils.closeQuietly(modelWriter);
}
}
}