Example usage for org.apache.maven.project MavenProject getOriginalModel

List of usage examples for org.apache.maven.project MavenProject getOriginalModel

Introduction

In this page you can find the example usage for org.apache.maven.project MavenProject getOriginalModel.

Prototype

public Model getOriginalModel() 

Source Link

Usage

From source file:ch.sourcepond.maven.release.pom.UpdateProcessor.java

License:Apache License

@Override
public ChangeSet updatePoms(final Reactor reactor, final boolean incrementSnapshotVersionAfterRelease)
        throws POMUpdateException {
    final DefaultChangeSet changeSet = changeSetFactory.newChangeSet();
    final List<String> errors = new LinkedList<String>();

    for (final ReleasableModule module : reactor) {
        final Version version = module.getVersion();

        // TODO: If a module will not be released, is further processing
        // necessary or should we continue the loop here?
        if (module.getVersion().hasChanged()) {
            log.info(format("Going to release %s %s", module.getArtifactId(), version.getReleaseVersion()));
        }//from   www.  j  av a 2  s . c  o m

        final MavenProject project = module.getProject();
        final Model releaseModel = project.getOriginalModel().clone();
        Context context = contextFactory.newContext(reactor, project, releaseModel, false);
        process(context, errors);
        // Mark project to be written at a later stage; if an exception
        // occurs, we don't need to revert anything.
        changeSet.markRelease(project.getFile(), releaseModel, context.needsOwnVersion());

        if (incrementSnapshotVersionAfterRelease) {
            final Model snapshotModel = project.getOriginalModel().clone();
            context = contextFactory.newContext(reactor, project, snapshotModel, true);
            process(context, errors);
            changeSet.markSnapshotVersionIncrement(project.getFile(), snapshotModel, context.needsOwnVersion());
        }
    }

    if (!errors.isEmpty()) {
        final POMUpdateException exception = new POMUpdateException(DEPENDENCY_ERROR_SUMMARY);
        exception.add(DEPENDENCY_ERROR_INTRO);
        for (final String dependencyError : errors) {
            exception.add(" * %s", dependencyError);
        }
        throw exception;
    }

    // At this point it's guaranteed that no dependency errors occurred.
    return changeSet.writeChanges();
}

From source file:com.exentes.maven.versions.UseReleasesMojo.java

License:Apache License

private Collection<String> processProject() throws MojoFailureException {
    List<String> errors = Lists.newArrayList();

    getLog().info("Processing all projects snapshots...");
    SetMultimap<Artifact, MavenProject> allSnapshotProjectArtifacts = VersionMojoUtils
            .allSnapshotProjectArtifacts(session);
    Map<String, Dependency> allDependenciesMap = allDependenciesMap(session);
    Map<Object, MavenProject> origins = origins(session);
    Set<MavenProject> projectsToUpdate = Sets.newHashSet();

    for (Map.Entry<Artifact, Collection<MavenProject>> artifactWithProjects : allSnapshotProjectArtifacts
            .asMap().entrySet()) {//from  w w w  . j  a v  a  2s  .  c  o m
        Artifact snapshotArtifact = artifactWithProjects.getKey();
        Collection<MavenProject> projects = artifactWithProjects.getValue();

        try {
            ArtifactResult artifactResult = resolveReleasedArtifact(snapshotArtifact);
            for (MavenProject project : projects) {
                Dependency dependencyToUpdate = allDependenciesMap
                        .get(projectArtifactKey(project, snapshotArtifact));

                if (isPropertyPlaceholder(dependencyToUpdate.getVersion())) {
                    MavenProject projectToUpdate = origins.get(dependencyToUpdate);
                    String propertyName = getPropertyName(dependencyToUpdate.getVersion());
                    Properties projectProperties = projectToUpdate.getOriginalModel().getProperties();
                    if (projectProperties != null && projectProperties.containsKey(propertyName)) {
                        String newVersion = null;
                        String versionPropertyValue = projectProperties.getProperty(propertyName);
                        VersionRange versionRange = VersionRange.createFromVersionSpec(versionPropertyValue);
                        if (versionRange.getRecommendedVersion() == null) {
                            int restrictionIndex = 0;
                            for (Restriction restriction : versionRange.getRestrictions()) {
                                if (restriction.isUpperBoundInclusive()) {
                                    if (snapshotArtifact.getVersion()
                                            .equals(restriction.getUpperBound().toString())) {
                                        DefaultArtifactVersion updatedVersion = new DefaultArtifactVersion(
                                                artifactResult.getArtifact().getVersion());
                                        Restriction updatedRestriction = new Restriction(
                                                restriction.getUpperBound().equals(restriction.getLowerBound())
                                                        ? updatedVersion
                                                        : restriction.getLowerBound(),
                                                restriction.isLowerBoundInclusive(), updatedVersion,
                                                restriction.isUpperBoundInclusive());
                                        versionRange.getRestrictions().set(restrictionIndex,
                                                updatedRestriction);
                                        newVersion = versionRange.toString();
                                        break;
                                    }
                                }
                                restrictionIndex++;
                            }
                        } else {
                            newVersion = artifactResult.getArtifact().getVersion();
                        }
                        if (newVersion != null) {
                            projectProperties.setProperty(propertyName, newVersion);
                            projectsToUpdate.add(projectToUpdate);
                            getLog().info("Version property {" + propertyName + "} in the project ["
                                    + projectToUpdate.getId() + "] set to the value: "
                                    + artifactResult.getArtifact().getVersion());
                            getLog().info("Snapshot dependency [" + snapshotArtifact + "] is replaced with ["
                                    + artifactResult.getArtifact() + "] in the project: ["
                                    + projectToUpdate.getId() + "]");
                        } else {
                            errors.add("Dependency version value '" + versionPropertyValue
                                    + "' defined as a value of property '" + propertyName + "' not supported");
                        }
                    } else {
                        errors.add("Property [" + propertyName + "] not found in the project ["
                                + projectsToUpdate + "] properties. The artifact version cannot be resolved");
                    }
                } else if (snapshotArtifact.getVersion().equals(dependencyToUpdate.getVersion())) {
                    MavenProject projectToUpdate = origins.get(dependencyToUpdate);
                    projectsToUpdate.add(projectToUpdate);
                    dependencyToUpdate.setVersion(artifactResult.getArtifact().getVersion());
                    getLog().info("Snapshot dependency [" + snapshotArtifact + "] is replaced with ["
                            + artifactResult.getArtifact() + "] in the project: [" + projectToUpdate.getId()
                            + "]");
                } else if (dependencyToUpdate.getVersion() == null) {
                    errors.add("Unknown version for the dependency [" + dependencyToUpdate + "]");
                } else {
                    // check if this is version range
                    try {
                        VersionRange versionRange = VersionRange
                                .createFromVersionSpec(dependencyToUpdate.getVersion());
                        if (versionRange.getRecommendedVersion() == null) {
                            // this this a version range. now all inclusive upper bounds should be inspected and the one which match resolved snapshot version must be upgraded
                            int restrictionIndex = 0;
                            for (Restriction restriction : versionRange.getRestrictions()) {
                                if (restriction.isUpperBoundInclusive()) {
                                    if (isPropertyPlaceholder(restriction.getUpperBound().toString())) {
                                        // try to update a property which is used as an upper version boundary
                                        String propertyName = getPropertyName(
                                                restriction.getUpperBound().toString());
                                        getLog().info("property name: " + propertyName);
                                        MavenProject projectToUpdate = origins.get(dependencyToUpdate);
                                        Properties projectProperties = projectToUpdate.getOriginalModel()
                                                .getProperties();
                                        if (projectProperties != null
                                                && projectProperties.containsKey(propertyName)
                                                && projectProperties.getProperty(propertyName)
                                                        .equals(snapshotArtifact.getVersion())) {
                                            projectProperties.setProperty(propertyName,
                                                    artifactResult.getArtifact().getVersion());
                                            projectsToUpdate.add(projectToUpdate);
                                            getLog().info(
                                                    "Version property {" + propertyName + "} in the project ["
                                                            + projectToUpdate.getId() + "] set to the value: "
                                                            + artifactResult.getArtifact().getVersion());
                                            getLog().info("Snapshot dependency [" + snapshotArtifact
                                                    + "] is replaced with [" + artifactResult.getArtifact()
                                                    + "] in the project: [" + projectToUpdate.getId() + "]");
                                            break;
                                        }
                                    } else {
                                        if (snapshotArtifact.getVersion()
                                                .equals(restriction.getUpperBound().toString())) {
                                            DefaultArtifactVersion updatedVersion = new DefaultArtifactVersion(
                                                    artifactResult.getArtifact().getVersion());
                                            Restriction updatedRestriction = new Restriction(
                                                    restriction.getUpperBound().equals(
                                                            restriction.getLowerBound()) ? updatedVersion
                                                                    : restriction.getLowerBound(),
                                                    restriction.isLowerBoundInclusive(), updatedVersion,
                                                    restriction.isUpperBoundInclusive());
                                            versionRange.getRestrictions().set(restrictionIndex,
                                                    updatedRestriction);
                                            MavenProject projectToUpdate = origins.get(dependencyToUpdate);
                                            projectsToUpdate.add(projectToUpdate);
                                            dependencyToUpdate.setVersion(versionRange.toString());
                                            getLog().info("Snapshot dependency [" + snapshotArtifact
                                                    + "] is replaced with [" + dependencyToUpdate
                                                    + "] in the project: [" + projectToUpdate.getId() + "]");
                                            break;
                                        }
                                    }
                                }
                                restrictionIndex++;
                            }
                        } else {
                            errors.add("Dependency version value [" + dependencyToUpdate.getVersion()
                                    + "] not supported");
                        }
                    } catch (InvalidVersionSpecificationException e) {
                        errors.add("Invalid version specified: " + dependencyToUpdate.getVersion()
                                + ". Exception when parsing version: " + e.getMessage());
                    }
                }
            }
        } catch (ArtifactResolutionException e) {
            getLog().info(e);
            errors.add("Failed to resolve a RELEASE version for [" + snapshotArtifact + "]. Exception: "
                    + e.getMessage());
        } catch (InvalidVersionSpecificationException e) {
            errors.add("Invalid version specified: " + snapshotArtifact.getVersion()
                    + ". Exception when parsing version: " + e.getMessage());
        }
    }

    if (!dryRun) {
        for (MavenProject project : projectsToUpdate) {
            try {
                modelWriter.write(project.getFile(), null, project.getOriginalModel());
            } catch (IOException e) {
                throw new MojoFailureException("Error writing POM", e);
            }
        }
    }
    return errors;
}

From source file:com.exentes.maven.versions.VersionMojoUtils.java

License:Apache License

private static Iterable<Dependency> dependencyManagement(MavenProject project) {
    if (project.getOriginalModel().getDependencyManagement() != null) {
        return project.getOriginalModel().getDependencyManagement().getDependencies();
    } else {/*from w  w  w .  java  2 s.  c  om*/
        return emptyList();
    }
}

From source file:com.exentes.maven.versions.VersionMojoUtils.java

License:Apache License

public static Map<String, Dependency> allDependenciesMap(MavenSession session) {
    Map<String, Dependency> allDependencyManagementMap = allDependencyManagementMap(session);
    Map<String, Dependency> allDependenciesMap = Maps.newHashMap();
    for (MavenProject project : session.getProjects()) {
        for (Dependency dependency : concat(emptyIfNull(project.getOriginalModel().getDependencies()),
                allActiveProfilesDependencies(project))) {
            if (dependency.getVersion() != null) {
                allDependenciesMap.put(projectDependencyKey(project, dependency), dependency);
            } else {
                // dependency version is not specified. Perhaps it is specified in a dependencyManagement section
                // of the project of one of its parents
                Dependency parentDependency = null;
                MavenProject projectToCheck = project;
                while (parentDependency == null && projectToCheck != null) {
                    parentDependency = allDependencyManagementMap
                            .get(projectDependencyKey(projectToCheck, dependency));
                    if (parentDependency != null) {
                        allDependenciesMap.put(projectDependencyKey(project, dependency), parentDependency);
                    } else {
                        if (!projectToCheck.isExecutionRoot()) {
                            projectToCheck = projectToCheck.getParent();
                        } else {
                            projectToCheck = null;
                        }// w w  w  .  j a va  2s.  co  m
                    }
                }
            }
        }
    }
    return allDependenciesMap;
}

From source file:com.exentes.maven.versions.VersionMojoUtils.java

License:Apache License

public static Map<Object, MavenProject> origins(MavenSession session) {
    Map<Object, MavenProject> origins = new IdentityHashMap<Object, MavenProject>();

    for (MavenProject project : session.getProjects()) {
        if (project.getOriginalModel().getProperties() != null) {
            origins.put(project.getOriginalModel().getProperties(), project);
        }/*  w  w  w.  ja v  a 2  s. co m*/
        for (Profile profile : project.getActiveProfiles()) {
            if (profile.getProperties() != null) {
                origins.put(profile.getProperties(), project);
            }
        }
        for (Dependency dependency : concat(emptyIfNull(project.getOriginalModel().getDependencies()),
                dependencyManagement(project), allActiveProfilesDependencies(project),
                allActiveProfilesDependencyManagement(project))) {
            origins.put(dependency, project);
        }
    }
    return origins;
}

From source file:com.igormaznitsa.upom.UPomMojo.java

License:Apache License

private Model[] collectFullHierarchy(final MavenProject project) {
    final List<Model> result = new ArrayList<Model>();
    MavenProject current = project;
    while (current != null) {
        result.add(0, current.getOriginalModel());
        current = current.getParent() == null ? null : current.getParent();
    }//from w  ww  .ja va2  s.c  o  m
    return result.toArray(new Model[result.size()]);
}

From source file:com.igormaznitsa.upom.UPomMojo.java

License:Apache License

private static UPomModel[] collectModels(final MavenProject project, final int depth) {
    final List<UPomModel> result = new ArrayList<UPomModel>();
    int levels = depth < 0 ? Integer.MAX_VALUE : depth;
    MavenProject current = project;
    while (current != null && levels-- >= 0) {
        result.add(0, new UPomModel(current.getOriginalModel()));
        current = current.getParent();//from   ww w .  jav  a2  s  . c o  m
    }

    return result.toArray(new UPomModel[result.size()]);
}

From source file:com.lewisd.maven.lint.rules.opensource.MissingLicenseRule.java

@Override
public void invoke(MavenProject mavenProject, Map<String, Object> models, ResultCollector resultCollector) {
    final List<License> licenses = mavenProject.getLicenses();

    if (licenses.isEmpty()) {
        InputLocation location = mavenProject.getOriginalModel().getLocation("licences");
        resultCollector.addViolation(mavenProject, this, "missing <licenses/> information",
                location == null ? getEmptyLocation(mavenProject) : location);
    } else {//w w w .  j  a  v  a2s  . c  om
        for (License license : licenses) {
            if (StringUtils.isEmpty(license.getName())) {
                resultCollector.addViolation(mavenProject, this, "missing <name> in <license/> information",
                        license.getLocation(""));
            }
            if (StringUtils.isEmpty(license.getUrl())) {
                resultCollector.addViolation(mavenProject, this, "missing <url> in <license/> information",
                        license.getLocation(""));
            }
        }
    }
}

From source file:com.lewisd.maven.lint.rules.opensource.MissingLicenseRule.java

private InputLocation getEmptyLocation(MavenProject mavenProject) {
    final InputSource source = new InputSource();
    source.setLocation(mavenProject.getOriginalModel().getPomFile() + "");
    return new InputLocation(0, 0, source);
}

From source file:com.redhat.rcm.version.mgr.session.ManagedInfo.java

License:Open Source License

void setToolchain(final File toolchainFile, final MavenProject project) {
    toolchainKey = new FullProjectKey(project);
    this.toolchainProject = project;

    final PluginManagement pm = project.getPluginManagement();
    if (pm != null) {
        for (final Plugin plugin : pm.getPlugins()) {
            managedPlugins.put(new VersionlessProjectKey(plugin), plugin);
        }//from w  w w.j  a v  a2  s. com
    }

    final Model model = project.getOriginalModel();
    final Build build = model.getBuild();
    if (build != null) {
        final List<Plugin> plugins = build.getPlugins();
        if (plugins != null) {
            for (final Plugin plugin : plugins) {
                final VersionlessProjectKey key = new VersionlessProjectKey(plugin);
                injectedPlugins.put(key, plugin);

                if (!managedPlugins.containsKey(key) && plugin.getVersion() != null) {
                    injectedPlugins.put(key, plugin);
                }
            }
        }
    }
}