Example usage for org.apache.maven.project ProjectSorter getSortedProjects

List of usage examples for org.apache.maven.project ProjectSorter getSortedProjects

Introduction

In this page you can find the example usage for org.apache.maven.project ProjectSorter getSortedProjects.

Prototype

public List<MavenProject> getSortedProjects() 

Source Link

Usage

From source file:org.eclipse.m2e.core.internal.embedder.MavenImpl.java

License:Open Source License

public List<MavenProject> getSortedProjects(List<MavenProject> projects) throws CoreException {
    try {//from w ww. jav a  2  s. c om
        ProjectSorter rm = new ProjectSorter(projects);
        return rm.getSortedProjects();
    } catch (CycleDetectedException ex) {
        throw new CoreException(
                new Status(IStatus.ERROR, IMavenConstants.PLUGIN_ID, Messages.MavenImpl_error_sort, ex));
    } catch (DuplicateProjectException ex) {
        throw new CoreException(
                new Status(IStatus.ERROR, IMavenConstants.PLUGIN_ID, Messages.MavenImpl_error_sort, ex));
    }
}

From source file:org.jvnet.hudson.plugins.mavendepsupdate.MavenUpdateChecker.java

License:Apache License

public MavenUpdateCheckerResult call() throws IOException {
    ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();

    try {/*www . j  a v  a 2s.c  o m*/

        PluginFirstClassLoader pluginFirstClassLoader = getPluginFirstClassLoader();
        Thread.currentThread().setContextClassLoader(pluginFirstClassLoader);
        String classLoaderName = getClass().getClassLoader().toString();

        mavenUpdateCheckerResult.addDebugLine(classLoaderName);
        PlexusContainer plexusContainer = getPlexusContainer(pluginFirstClassLoader);

        Thread.currentThread().setContextClassLoader(plexusContainer.getContainerRealm());
        mavenUpdateCheckerResult.addDebugLine("ok for new DefaultPlexusContainer( conf ) ");
        mavenUpdateCheckerResult.addDebugLine("Thread.currentThread().getContextClassLoader() "
                + Thread.currentThread().getContextClassLoader());
        mavenUpdateCheckerResult.addDebugLine("Thread.currentThread().getContextClassLoader().parent "
                + (Thread.currentThread().getContextClassLoader().getParent() == null ? "null"
                        : Thread.currentThread().getContextClassLoader().getParent().toString()));
        mavenUpdateCheckerResult.addDebugLine(
                "classLoader  urls " + Arrays.asList(plexusContainer.getContainerRealm().getURLs()));
        ProjectBuilder projectBuilder = plexusContainer.lookup(ProjectBuilder.class);

        // FIXME load userProperties from the job
        Properties userProperties = this.userProperties == null ? new Properties() : this.userProperties;

        userProperties.put("java.home", jdkHome);

        ProjectBuildingRequest projectBuildingRequest = getProjectBuildingRequest(userProperties,
                plexusContainer);

        // check plugins too
        projectBuildingRequest.setProcessPlugins(true);
        // force snapshots update

        projectBuildingRequest.setResolveDependencies(true);

        List<ProjectBuildingResult> projectBuildingResults = projectBuilder
                .build(Arrays.asList(new File(rootPomPath)), true, projectBuildingRequest);

        ProjectDependenciesResolver projectDependenciesResolver = plexusContainer
                .lookup(ProjectDependenciesResolver.class);

        List<MavenProject> mavenProjects = new ArrayList<MavenProject>(projectBuildingResults.size());

        for (ProjectBuildingResult projectBuildingResult : projectBuildingResults) {
            mavenProjects.add(projectBuildingResult.getProject());
        }

        ProjectSorter projectSorter = new ProjectSorter(mavenProjects);

        // use the projects reactor model as a workspaceReader
        // if reactors are not available remotely dependencies resolve will failed
        // due to artifact not found

        final Map<String, MavenProject> projectMap = getProjectMap(mavenProjects);
        WorkspaceReader reactorRepository = new ReactorReader(projectMap);

        MavenRepositorySystemSession mavenRepositorySystemSession = (MavenRepositorySystemSession) projectBuildingRequest
                .getRepositorySession();

        mavenRepositorySystemSession.setUpdatePolicy(RepositoryPolicy.UPDATE_POLICY_ALWAYS);

        mavenRepositorySystemSession.setWorkspaceReader(reactorRepository);

        MavenPluginManager mavenPluginManager = plexusContainer.lookup(MavenPluginManager.class);

        for (MavenProject mavenProject : projectSorter.getSortedProjects()) {
            LOGGER.info("resolve dependencies for project " + mavenProject.getId());

            DefaultDependencyResolutionRequest dependencyResolutionRequest = new DefaultDependencyResolutionRequest(
                    mavenProject, mavenRepositorySystemSession);

            try {
                DependencyResolutionResult dependencyResolutionResult = projectDependenciesResolver
                        .resolve(dependencyResolutionRequest);
            } catch (DependencyResolutionException e) {
                mavenUpdateCheckerResult.addDebugLine(e.getMessage());
                StringWriter sw = new StringWriter();
                PrintWriter pw = new PrintWriter(sw);
                e.printStackTrace(pw);
                mavenUpdateCheckerResult.addDebugLine("skip:" + sw.toString());
            }
            if (checkPlugins) {
                for (Plugin plugin : mavenProject.getBuildPlugins()) {
                    // only for SNAPSHOT
                    if (StringUtils.endsWith(plugin.getVersion(), "SNAPSHOT")) {
                        mavenPluginManager.getPluginDescriptor(plugin,
                                mavenProject.getRemotePluginRepositories(), mavenRepositorySystemSession);
                    }
                }
            }

        }
        SnapshotTransfertListener snapshotTransfertListener = (SnapshotTransfertListener) projectBuildingRequest
                .getRepositorySession().getTransferListener();

        if (snapshotTransfertListener.isSnapshotDownloaded()) {
            mavenUpdateCheckerResult.addFilesUpdatedNames(snapshotTransfertListener.getSnapshots());
        }

    } catch (Exception e) {
        mavenUpdateCheckerResult.addDebugLine(e.getMessage());
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        e.printStackTrace(pw);
        mavenUpdateCheckerResult.addDebugLine("skip:" + sw.toString());
    } finally {
        Thread.currentThread().setContextClassLoader(originalClassLoader);
    }
    return mavenUpdateCheckerResult;
}

From source file:org.sourcepit.maven.bootstrap.core.AbstractBootstrapper.java

License:Apache License

private List<MavenProject> buildBootstrapProjects(MavenSession session, Collection<File> descriptors) {
    final ProjectBuildingRequest request = new DefaultProjectBuildingRequest(
            session.getProjectBuildingRequest());
    request.setRemoteRepositories(filterArtifactRepositories(request.getRemoteRepositories()));

    final List<ProjectBuildingResult> results;
    try {//from ww  w .  j av  a2 s . co  m
        results = projectBuilder.build(new ArrayList<File>(descriptors), false, request);
    } catch (ProjectBuildingException e) {
        throw new IllegalStateException("Cannot build bootstrapper project for " + e.getPomFile(), e);
    }

    final List<MavenProject> projects = new ArrayList<MavenProject>(results.size());
    for (ProjectBuildingResult result : results) {
        final MavenProject project = result.getProject();
        project.setRemoteArtifactRepositories(
                filterArtifactRepositories(project.getRemoteArtifactRepositories()));
        project.setPluginArtifactRepositories(
                filterArtifactRepositories(project.getPluginArtifactRepositories()));
        projects.add(project);
    }

    final ProjectSorter projectSorter;
    try {
        // HACK: Constructor arg changed with Maven 3.2 from List to Collection which made it binary incompatible
        projectSorter = (ProjectSorter) ProjectSorter.class.getConstructors()[0].newInstance(projects);
    } catch (InstantiationException e) {
        throw new IllegalStateException(e);
    } catch (IllegalAccessException e) {
        throw new IllegalStateException(e);
    } catch (InvocationTargetException e) {
        throw new IllegalStateException(e.getTargetException());
    }

    return projectSorter.getSortedProjects();
}

From source file:org.springframework.ide.vscode.commons.maven.MavenBridge.java

License:Open Source License

public List<MavenProject> getSortedProjects(List<MavenProject> projects) throws MavenException {
    try {/*from   w ww .  ja v  a  2 s.  c  om*/
        ProjectSorter rm = new ProjectSorter(projects);
        return rm.getSortedProjects();
    } catch (CycleDetectedException ex) {
        throw new MavenException(ex);
    } catch (DuplicateProjectException ex) {
        throw new MavenException(ex);
    }
}