Search in sources :

Example 6 with ProjectBuilder

use of org.apache.maven.project.ProjectBuilder in project drools by kiegroup.

the class MavenEmbedder method readProject.

// ----------------------------------------------------------------------
// Project
// ----------------------------------------------------------------------
public MavenProject readProject(final InputStream mavenProjectStream) throws ProjectBuildingException, MavenEmbedderException {
    ModelSource modelSource = new ModelSource() {

        @Override
        public InputStream getInputStream() {
            return mavenProjectStream;
        }

        @Override
        public String getLocation() {
            return "";
        }
    };
    ClassLoader originalCl = Thread.currentThread().getContextClassLoader();
    try {
        org.eclipse.aether.artifact.Artifact lastArtifact = null;
        do {
            Thread.currentThread().setContextClassLoader(componentProvider.getSystemClassLoader());
            ProjectBuilder projectBuilder = componentProvider.lookup(ProjectBuilder.class);
            // BZ-1007894: Check if added dependencies are resolvable.
            ProjectBuildingResult result = projectBuilder.build(modelSource, getProjectBuildingRequest());
            if (result != null && result.getDependencyResolutionResult() != null && !result.getDependencyResolutionResult().getCollectionErrors().isEmpty()) {
                // A dependency resolution error has been produced. It can contains some error. Throw the first one to the client, so the user will fix every one sequentially.
                final Exception depedencyResolutionException = result.getDependencyResolutionResult().getCollectionErrors().get(0);
                if (depedencyResolutionException instanceof ArtifactDescriptorException) {
                    final org.eclipse.aether.artifact.Artifact artifact = ((ArtifactDescriptorException) depedencyResolutionException).getResult().getArtifact();
                    if (!artifact.equals(lastArtifact)) {
                        tryRemoveLocalArtifact(artifact);
                        lastArtifact = artifact;
                        continue;
                    }
                }
                if (depedencyResolutionException != null) {
                    throw new MavenEmbedderException(depedencyResolutionException.getMessage(), depedencyResolutionException);
                }
            }
            return (result == null || result.getProject() == null) ? null : result.getProject();
        } while (true);
    } catch (ComponentLookupException e) {
        throw new MavenEmbedderException(e.getMessage(), e);
    } finally {
        Thread.currentThread().setContextClassLoader(originalCl);
        try {
            mavenProjectStream.close();
        } catch (IOException e) {
        }
    }
}
Also used : ProjectBuilder(org.apache.maven.project.ProjectBuilder) ProjectBuildingResult(org.apache.maven.project.ProjectBuildingResult) Artifact(org.eclipse.aether.artifact.Artifact) ComponentLookupException(org.codehaus.plexus.component.repository.exception.ComponentLookupException) IOException(java.io.IOException) ArtifactDescriptorException(org.eclipse.aether.resolution.ArtifactDescriptorException) ModelSource(org.apache.maven.model.building.ModelSource) SettingsBuildingException(org.apache.maven.settings.building.SettingsBuildingException) ComponentLookupException(org.codehaus.plexus.component.repository.exception.ComponentLookupException) ArtifactDescriptorException(org.eclipse.aether.resolution.ArtifactDescriptorException) ProjectBuildingException(org.apache.maven.project.ProjectBuildingException) InvalidRepositoryException(org.apache.maven.artifact.InvalidRepositoryException) IOException(java.io.IOException) MavenExecutionRequestPopulationException(org.apache.maven.execution.MavenExecutionRequestPopulationException)

Example 7 with ProjectBuilder

use of org.apache.maven.project.ProjectBuilder in project che by eclipse.

the class MavenServerImpl method internalResolveProject.

private MavenResult internalResolveProject(File pom, List<String> activeProfiles, List<String> inactiveProfiles, List<ResolutionListener> dependencyTreeResolutionListeners) {
    MavenExecutionRequest request = newMavenRequest(pom, activeProfiles, inactiveProfiles, Collections.emptyList());
    request.setUpdateSnapshots(updateSnapshots);
    AtomicReference<MavenResult> reference = new AtomicReference<>();
    runMavenRequest(request, () -> {
        try {
            ProjectBuilder builder = getMavenComponent(ProjectBuilder.class);
            List<ProjectBuildingResult> resultList = builder.build(Collections.singletonList(pom), false, request.getProjectBuildingRequest());
            ProjectBuildingResult result = resultList.get(0);
            MavenProject mavenProject = result.getProject();
            RepositorySystemSession repositorySession = getMavenComponent(LegacySupport.class).getRepositorySession();
            if (repositorySession instanceof DefaultRepositorySystemSession) {
                ((DefaultRepositorySystemSession) repositorySession).setTransferListener(new ArtifactTransferListener(mavenProgressNotifier));
                if (workspaceCache != null) {
                    ((DefaultRepositorySystemSession) repositorySession).setWorkspaceReader(new MavenWorkspaceReader(workspaceCache));
                }
            }
            List<Exception> exceptions = new ArrayList<>();
            loadExtensions(mavenProject, exceptions);
            mavenProject.setDependencyArtifacts(mavenProject.createArtifacts(getMavenComponent(ArtifactFactory.class), null, null));
            ArtifactResolutionRequest resolutionRequest = new ArtifactResolutionRequest();
            resolutionRequest.setArtifact(mavenProject.getArtifact());
            resolutionRequest.setRemoteRepositories(mavenProject.getRemoteArtifactRepositories());
            resolutionRequest.setArtifactDependencies(mavenProject.getDependencyArtifacts());
            resolutionRequest.setListeners(dependencyTreeResolutionListeners);
            resolutionRequest.setLocalRepository(localRepo);
            resolutionRequest.setManagedVersionMap(mavenProject.getManagedVersionMap());
            resolutionRequest.setResolveTransitively(true);
            resolutionRequest.setResolveRoot(false);
            ArtifactResolver resolver = getMavenComponent(ArtifactResolver.class);
            ArtifactResolutionResult resolve = resolver.resolve(resolutionRequest);
            mavenProject.setArtifacts(resolve.getArtifacts());
            reference.set(new MavenResult(mavenProject, exceptions));
        } catch (Exception e) {
            reference.set(new MavenResult(null, null, Collections.singletonList(e)));
        }
    });
    return reference.get();
}
Also used : RepositorySystemSession(org.eclipse.aether.RepositorySystemSession) DefaultRepositorySystemSession(org.eclipse.aether.DefaultRepositorySystemSession) LegacySupport(org.apache.maven.plugin.LegacySupport) MavenExecutionRequest(org.apache.maven.execution.MavenExecutionRequest) DefaultMavenExecutionRequest(org.apache.maven.execution.DefaultMavenExecutionRequest) ArrayList(java.util.ArrayList) AtomicReference(java.util.concurrent.atomic.AtomicReference) ProjectBuildingException(org.apache.maven.project.ProjectBuildingException) InitializationException(org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException) ModelInterpolationException(org.apache.maven.project.interpolation.ModelInterpolationException) InvocationTargetException(java.lang.reflect.InvocationTargetException) RemoteException(java.rmi.RemoteException) InvalidProjectModelException(org.apache.maven.project.InvalidProjectModelException) SettingsBuildingException(org.apache.maven.settings.building.SettingsBuildingException) ComponentLookupException(org.codehaus.plexus.component.repository.exception.ComponentLookupException) MavenExecutionException(org.apache.maven.MavenExecutionException) ArtifactResolutionException(org.eclipse.aether.resolution.ArtifactResolutionException) InvalidRepositoryException(org.apache.maven.artifact.InvalidRepositoryException) MavenExecutionRequestPopulationException(org.apache.maven.execution.MavenExecutionRequestPopulationException) ArtifactResolver(org.apache.maven.artifact.resolver.ArtifactResolver) CheArtifactResolver(org.eclipse.che.maven.CheArtifactResolver) DefaultArtifactResolver(org.eclipse.aether.internal.impl.DefaultArtifactResolver) ProjectBuilder(org.apache.maven.project.ProjectBuilder) MavenProject(org.apache.maven.project.MavenProject) DefaultRepositorySystemSession(org.eclipse.aether.DefaultRepositorySystemSession) ProjectBuildingResult(org.apache.maven.project.ProjectBuildingResult) ArtifactResolutionRequest(org.apache.maven.artifact.resolver.ArtifactResolutionRequest) ArtifactResolutionResult(org.apache.maven.artifact.resolver.ArtifactResolutionResult)

Example 8 with ProjectBuilder

use of org.apache.maven.project.ProjectBuilder in project che by eclipse.

the class EffectivePomWriter method getEffectivePom.

public static String getEffectivePom(MavenServerImpl server, final File pom, List<String> activeProfiles, List<String> inactiveProfiles) {
    StringWriter stringWriter = new StringWriter();
    try {
        MavenExecutionRequest request = server.newMavenRequest(pom, activeProfiles, inactiveProfiles, Collections.emptyList());
        server.runMavenRequest(request, () -> {
            try {
                ProjectBuilder builder = server.getMavenComponent(ProjectBuilder.class);
                ProjectBuildingResult projectBuildingResult = builder.build(new File(pom.getPath()), request.getProjectBuildingRequest());
                MavenProject project = projectBuildingResult.getProject();
                XMLWriter writer = new PrettyPrintXMLWriter(stringWriter, "    ");
                writeHeader(writer);
                writeEffectivePom(project, writer);
            } catch (ProjectBuildingException | MojoExecutionException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        });
    } catch (Exception e) {
        return null;
    }
    return stringWriter.toString();
}
Also used : ProjectBuildingException(org.apache.maven.project.ProjectBuildingException) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) MavenExecutionRequest(org.apache.maven.execution.MavenExecutionRequest) PrettyPrintXMLWriter(org.codehaus.plexus.util.xml.PrettyPrintXMLWriter) XMLWriter(org.codehaus.plexus.util.xml.XMLWriter) PrettyPrintXMLWriter(org.codehaus.plexus.util.xml.PrettyPrintXMLWriter) ProjectBuildingException(org.apache.maven.project.ProjectBuildingException) JDOMException(org.jdom.JDOMException) IOException(java.io.IOException) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) StringWriter(java.io.StringWriter) ProjectBuilder(org.apache.maven.project.ProjectBuilder) MavenProject(org.apache.maven.project.MavenProject) ProjectBuildingResult(org.apache.maven.project.ProjectBuildingResult) File(java.io.File)

Example 9 with ProjectBuilder

use of org.apache.maven.project.ProjectBuilder in project intellij-community by JetBrains.

the class MavenEffectivePomDumper method evaluateEffectivePom.

// See org.apache.maven.plugins.help.EffectivePomMojo#execute from maven-help-plugin
@Nullable
public static String evaluateEffectivePom(final Maven3ServerEmbedder embedder, @NotNull final File file, @NotNull List<String> activeProfiles, @NotNull List<String> inactiveProfiles) throws RemoteException, MavenServerProcessCanceledException {
    final StringWriter w = new StringWriter();
    try {
        final MavenExecutionRequest request = embedder.createRequest(file, activeProfiles, inactiveProfiles, Collections.<String>emptyList());
        embedder.executeWithMavenSession(request, new Runnable() {

            @Override
            public void run() {
                try {
                    // copied from DefaultMavenProjectBuilder.buildWithDependencies
                    ProjectBuilder builder = embedder.getComponent(ProjectBuilder.class);
                    ProjectBuildingResult buildingResult = builder.build(new File(file.getPath()), request.getProjectBuildingRequest());
                    MavenProject project = buildingResult.getProject();
                    XMLWriter writer = new PrettyPrintXMLWriter(new PrintWriter(w), StringUtils.repeat(" ", XmlWriterUtil.DEFAULT_INDENTATION_SIZE), "\n", null, null);
                    writeHeader(writer);
                    writeEffectivePom(project, writer);
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
        });
    } catch (Exception e) {
        return null;
    }
    return w.toString();
}
Also used : MavenExecutionRequest(org.apache.maven.execution.MavenExecutionRequest) PrettyPrintXMLWriter(org.codehaus.plexus.util.xml.PrettyPrintXMLWriter) XMLWriter(org.codehaus.plexus.util.xml.XMLWriter) PrettyPrintXMLWriter(org.codehaus.plexus.util.xml.PrettyPrintXMLWriter) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) RemoteException(java.rmi.RemoteException) ProjectBuilder(org.apache.maven.project.ProjectBuilder) MavenProject(org.apache.maven.project.MavenProject) ProjectBuildingResult(org.apache.maven.project.ProjectBuildingResult) Nullable(org.jetbrains.annotations.Nullable)

Example 10 with ProjectBuilder

use of org.apache.maven.project.ProjectBuilder in project drools by kiegroup.

the class MavenEmbedder method buildProjects.

public List<ProjectBuildingResult> buildProjects(File mavenProject, boolean recursive) throws ProjectBuildingException, MavenEmbedderException {
    ClassLoader originalCl = Thread.currentThread().getContextClassLoader();
    try {
        Thread.currentThread().setContextClassLoader(componentProvider.getSystemClassLoader());
        ProjectBuilder projectBuilder = componentProvider.lookup(ProjectBuilder.class);
        return projectBuilder.build(Collections.singletonList(mavenProject), recursive, getProjectBuildingRequest());
    } catch (ComponentLookupException e) {
        throw new MavenEmbedderException(e.getMessage(), e);
    } finally {
        Thread.currentThread().setContextClassLoader(originalCl);
    }
}
Also used : ProjectBuilder(org.apache.maven.project.ProjectBuilder) ComponentLookupException(org.codehaus.plexus.component.repository.exception.ComponentLookupException)

Aggregations

ProjectBuilder (org.apache.maven.project.ProjectBuilder)15 MavenProject (org.apache.maven.project.MavenProject)11 ProjectBuildingResult (org.apache.maven.project.ProjectBuildingResult)8 ProjectBuildingRequest (org.apache.maven.project.ProjectBuildingRequest)6 File (java.io.File)5 Properties (java.util.Properties)5 ProjectBuildingException (org.apache.maven.project.ProjectBuildingException)5 IOException (java.io.IOException)4 ArchetypeCreationRequest (org.apache.maven.archetype.ArchetypeCreationRequest)4 ArchetypeCreationResult (org.apache.maven.archetype.ArchetypeCreationResult)4 MavenExecutionRequest (org.apache.maven.execution.MavenExecutionRequest)4 DefaultProjectBuildingRequest (org.apache.maven.project.DefaultProjectBuildingRequest)4 ComponentLookupException (org.codehaus.plexus.component.repository.exception.ComponentLookupException)4 FileWriter (java.io.FileWriter)3 Writer (java.io.Writer)3 ArchetypeGenerationRequest (org.apache.maven.archetype.ArchetypeGenerationRequest)3 ArchetypeGenerationResult (org.apache.maven.archetype.ArchetypeGenerationResult)3 ArchetypeManager (org.apache.maven.archetype.ArchetypeManager)3 Archetype (org.apache.maven.archetype.catalog.Archetype)3 ArchetypeCatalog (org.apache.maven.archetype.catalog.ArchetypeCatalog)3