public void execute()

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