Example usage for org.apache.maven.project ProjectBuildingRequest getRepositorySession

List of usage examples for org.apache.maven.project ProjectBuildingRequest getRepositorySession

Introduction

In this page you can find the example usage for org.apache.maven.project ProjectBuildingRequest getRepositorySession.

Prototype

RepositorySystemSession getRepositorySession();

Source Link

Usage

From source file:org.commonjava.emb.project.ProjectLoader.java

License:Apache License

public MavenProject buildProjectInstance(final String groupId, final String artifactId, final String version,
        final ProjectToolsSession session) throws ProjectToolsException {
    final ProjectBuildingRequest req = sessionInjector.getProjectBuildingRequest(session);

    try {/*from   w  w  w.  j a va 2  s .c om*/
        final org.apache.maven.artifact.Artifact pomArtifact = mavenRepositorySystem.createArtifact(groupId,
                artifactId, version, "pom");

        final Artifact aetherPomArtifact = RepositoryUtils.toArtifact(pomArtifact);

        final ArtifactRequest artifactRequest = new ArtifactRequest(aetherPomArtifact,
                sessionInjector.getRemoteRepositories(session), "project");

        final ArtifactResult artifactResult = aetherRepositorySystem.resolveArtifact(req.getRepositorySession(),
                artifactRequest);

        final File pomFile = artifactResult.getArtifact().getFile();
        final ProjectBuildingResult result = projectBuilder.build(pomFile, req);

        final MavenProject project = result.getProject();
        project.setRemoteArtifactRepositories(session.getRemoteArtifactRepositories());

        project.setFile(pomFile);

        addProjects(session, project);

        return project;
    } catch (final ProjectBuildingException e) {
        // logger.error( "Failed to build MavenProject instances from POM files for sorting: " + e.getMessage(), e
        // );
        final List<ProjectBuildingResult> results = e.getResults();

        final StringBuilder sb = new StringBuilder();

        int i = 0;
        if (results == null) {
            sb.append("Cannot build project instance for: ").append(groupId).append(':').append(artifactId)
                    .append(':').append(version);

            final StringWriter sWriter = new StringWriter();
            final PrintWriter pWriter = new PrintWriter(sWriter);

            e.printStackTrace(pWriter);
            sb.append("\n").append(sWriter);
        } else {
            for (final ProjectBuildingResult result : results) {
                final List<ModelProblem> problems = result.getProblems();
                for (final ModelProblem problem : problems) {
                    sb.append(problem.getMessage()).append("\n\t").append(problem.getSource()).append("@")
                            .append(problem.getLineNumber()).append(":" + problem.getColumnNumber());

                    if (problem.getException() != null) {
                        final StringWriter sWriter = new StringWriter();
                        final PrintWriter pWriter = new PrintWriter(sWriter);

                        problem.getException().printStackTrace(pWriter);
                        sb.append("\n").append(sWriter);
                    }

                    sb.append((++i)).append(" ").append(sb);
                }
            }
        }

        throw new ProjectToolsException("Failed to build project instance. \n\n%s", e, sb);
    } catch (final ArtifactResolutionException e) {
        throw new ProjectToolsException("Failed to resolve POM: %s:%s:%s\nReason: %s", e, groupId, artifactId,
                version, e.getMessage());
    }
}

From source file:org.jboss.as.plugin.server.SonatypeAetherArtifactResolver.java

License:Open Source License

@Override
public File resolve(final MavenProject project, final String artifact) {
    final ArtifactResult result;
    try {/*w w  w  . j  a v a  2s  .c  om*/
        final ProjectBuildingRequest projectBuildingRequest = invoke(project, "getProjectBuildingRequest",
                ProjectBuildingRequest.class);
        final ArtifactRequest request = new ArtifactRequest();
        final DefaultArtifact defaultArtifact = createArtifact(artifact);
        request.setArtifact(defaultArtifact);
        @SuppressWarnings("unchecked")
        final List<RemoteRepository> repos = invoke(project, "getRemoteProjectRepositories", List.class);
        request.setRepositories(repos);
        result = repoSystem.resolveArtifact(projectBuildingRequest.getRepositorySession(), request);
    } catch (ArtifactResolutionException e) {
        throw new RuntimeException(e.getMessage(), e);
    } catch (NoSuchMethodException e) {
        throw new RuntimeException(e.getMessage(), e);
    } catch (IllegalAccessException e) {
        throw new RuntimeException(e.getMessage(), e);
    } catch (InvocationTargetException e) {
        throw new RuntimeException(e.getMessage(), e);
    }
    return result.getArtifact().getFile();
}

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

License:Apache License

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

    try {/* w w  w . ja  v a2 s  .  co  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.phpmaven.test.AbstractTestCase.java

License:Apache License

/**
 * Creates a maven session with given test directory (name relative to this class package).
 * /* w  ww.  j  av a 2s.c  om*/
 * @param strTestDir the relative folder containing the pom.xml to be used
 * @return the maven session
 * @throws Exception thrown on errors
 */
protected MavenSession createSessionForPhpMaven(final String strTestDir, boolean resolveDependencies,
        boolean processPlugins) throws Exception {
    final File testDir = preparePhpMavenLocalRepos(strTestDir);
    final MavenExecutionResult result = null;
    final MavenData data = this.createProjectBuildingRequest();
    final ProjectBuildingRequest buildingRequest = data.projectBuildingRequest;
    final MavenExecutionRequest request = data.executionRequest;

    final File projectFile = new File(testDir, "pom.xml");
    final MavenProject project = lookup(ProjectBuilder.class).build(projectFile, buildingRequest).getProject();

    final MavenSession session = new MavenSession(getContainer(), buildingRequest.getRepositorySession(),
            request, result);
    session.setCurrentProject(project);

    return session;
}

From source file:org.wildfly.plugin.server.EclipseAetherArtifactResolver.java

License:Open Source License

@Override
public File resolve(final MavenProject project, final String artifact) {
    final ArtifactResult result;
    try {//from w w  w . j  a  v  a2 s. c o m
        final ProjectBuildingRequest projectBuildingRequest = project.getProjectBuildingRequest();

        final ArtifactRequest request = new ArtifactRequest();
        final ArtifactNameSplitter splitter = ArtifactNameSplitter.of(artifact).split();
        final Artifact defaultArtifact = new DefaultArtifact(splitter.getGroupId(), splitter.getArtifactId(),
                splitter.getClassifier(), splitter.getPackaging(), splitter.getVersion());
        request.setArtifact(defaultArtifact);
        final List<RemoteRepository> repos = project.getRemoteProjectRepositories();
        request.setRepositories(repos);
        result = repoSystem.resolveArtifact(projectBuildingRequest.getRepositorySession(), request);
    } catch (ArtifactResolutionException e) {
        throw new RuntimeException(e.getMessage(), e);
    }
    return result.getArtifact().getFile();
}

From source file:org.wildfly.plugin.server.SonatypeAetherArtifactResolver.java

License:Open Source License

@Override
public File resolve(final MavenProject project, final String artifact) {
    final ArtifactResult result;
    try {/* w  w w .  j  a va  2 s  . co  m*/
        final ProjectBuildingRequest projectBuildingRequest = project.getProjectBuildingRequest();
        final ArtifactRequest request = new ArtifactRequest();
        final DefaultArtifact defaultArtifact = createArtifact(artifact);
        request.setArtifact(defaultArtifact);
        @SuppressWarnings("unchecked")
        final List<RemoteRepository> repos = invoke(project, "getRemoteProjectRepositories", List.class);
        request.setRepositories(repos);
        result = repoSystem.resolveArtifact(projectBuildingRequest.getRepositorySession(), request);
    } catch (ArtifactResolutionException e) {
        throw new RuntimeException(e.getMessage(), e);
    } catch (NoSuchMethodException e) {
        throw new RuntimeException(e.getMessage(), e);
    } catch (IllegalAccessException e) {
        throw new RuntimeException(e.getMessage(), e);
    } catch (InvocationTargetException e) {
        throw new RuntimeException(e.getMessage(), e);
    }
    return result.getArtifact().getFile();
}