Search in sources :

Example 11 with ProjectBuildingResult

use of org.apache.maven.project.ProjectBuildingResult 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 12 with ProjectBuildingResult

use of org.apache.maven.project.ProjectBuildingResult in project gradle by gradle.

the class MavenProjectsCreator method createNow.

private Set<MavenProject> createNow(Settings settings, File pomFile) throws PlexusContainerException, ComponentLookupException, MavenExecutionRequestPopulationException, ProjectBuildingException {
    ContainerConfiguration containerConfiguration = new DefaultContainerConfiguration().setClassWorld(new ClassWorld("plexus.core", Thread.currentThread().getContextClassLoader())).setName("mavenCore").setClassPathScanning(PlexusConstants.SCANNING_INDEX).setAutoWiring(true);
    DefaultPlexusContainer container = new DefaultPlexusContainer(containerConfiguration);
    ProjectBuilder builder = container.lookup(ProjectBuilder.class);
    MavenExecutionRequest executionRequest = new DefaultMavenExecutionRequest();
    final Properties properties = SystemProperties.getInstance().withSystemProperties(() -> {
        final Properties currentProperties = new Properties();
        currentProperties.putAll(System.getProperties());
        return currentProperties;
    });
    executionRequest.setSystemProperties(properties);
    MavenExecutionRequestPopulator populator = container.lookup(MavenExecutionRequestPopulator.class);
    populateFromSettings(settings, executionRequest, populator);
    populator.populateDefaults(executionRequest);
    ProjectBuildingRequest buildingRequest = executionRequest.getProjectBuildingRequest();
    buildingRequest.getRemoteRepositories().forEach(repository -> {
        if (repository.getId().equals(RepositorySystem.DEFAULT_REMOTE_REPO_ID)) {
            repository.setUrl(RepositoryHandler.MAVEN_CENTRAL_URL);
        }
    });
    buildingRequest.setProcessPlugins(false);
    MavenProject mavenProject = builder.build(pomFile, buildingRequest).getProject();
    Set<MavenProject> reactorProjects = new LinkedHashSet<>();
    // TODO adding the parent project first because the converter needs it this way ATM. This is oversimplified.
    // the converter should not depend on the order of reactor projects.
    // we should add coverage for nested multi-project builds with multiple parents.
    reactorProjects.add(mavenProject);
    List<ProjectBuildingResult> allProjects = builder.build(ImmutableList.of(pomFile), true, buildingRequest);
    // noinspection NullableProblems
    CollectionUtils.collect(allProjects, reactorProjects, ProjectBuildingResult::getProject);
    MavenExecutionResult result = new DefaultMavenExecutionResult();
    result.setProject(mavenProject);
    RepositorySystemSession repoSession = new DefaultRepositorySystemSession();
    @SuppressWarnings("deprecation") MavenSession session = new MavenSession(container, repoSession, executionRequest, result);
    session.setCurrentProject(mavenProject);
    return reactorProjects;
}
Also used : LinkedHashSet(java.util.LinkedHashSet) RepositorySystemSession(org.eclipse.aether.RepositorySystemSession) DefaultRepositorySystemSession(org.eclipse.aether.DefaultRepositorySystemSession) DefaultMavenExecutionResult(org.apache.maven.execution.DefaultMavenExecutionResult) MavenExecutionResult(org.apache.maven.execution.MavenExecutionResult) DefaultMavenExecutionResult(org.apache.maven.execution.DefaultMavenExecutionResult) MavenExecutionRequest(org.apache.maven.execution.MavenExecutionRequest) DefaultMavenExecutionRequest(org.apache.maven.execution.DefaultMavenExecutionRequest) DefaultMavenExecutionRequest(org.apache.maven.execution.DefaultMavenExecutionRequest) ClassWorld(org.codehaus.plexus.classworlds.ClassWorld) Properties(java.util.Properties) SystemProperties(org.gradle.internal.SystemProperties) ContainerConfiguration(org.codehaus.plexus.ContainerConfiguration) DefaultContainerConfiguration(org.codehaus.plexus.DefaultContainerConfiguration) ProjectBuildingRequest(org.apache.maven.project.ProjectBuildingRequest) MavenSession(org.apache.maven.execution.MavenSession) DefaultContainerConfiguration(org.codehaus.plexus.DefaultContainerConfiguration) DefaultPlexusContainer(org.codehaus.plexus.DefaultPlexusContainer) ProjectBuilder(org.apache.maven.project.ProjectBuilder) MavenProject(org.apache.maven.project.MavenProject) DefaultRepositorySystemSession(org.eclipse.aether.DefaultRepositorySystemSession) ProjectBuildingResult(org.apache.maven.project.ProjectBuildingResult) MavenExecutionRequestPopulator(org.apache.maven.execution.MavenExecutionRequestPopulator)

Example 13 with ProjectBuildingResult

use of org.apache.maven.project.ProjectBuildingResult in project sts4 by spring-projects.

the class MavenBridge method readMavenProject.

public MavenExecutionResult readMavenProject(File pomFile, ProjectBuildingRequest configuration) throws MavenException {
    long start = System.currentTimeMillis();
    // $NON-NLS-1$
    log.debug("Reading Maven project: {}", pomFile.getAbsoluteFile());
    MavenExecutionResult result = new DefaultMavenExecutionResult();
    try {
        configuration.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL);
        ProjectBuildingResult projectBuildingResult = lookup(ProjectBuilder.class).build(pomFile, configuration);
        result.setProject(projectBuildingResult.getProject());
        result.setDependencyResolutionResult(projectBuildingResult.getDependencyResolutionResult());
    } catch (ProjectBuildingException ex) {
        if (ex.getResults() != null && ex.getResults().size() == 1) {
            ProjectBuildingResult projectBuildingResult = ex.getResults().get(0);
            result.setProject(projectBuildingResult.getProject());
            result.setDependencyResolutionResult(projectBuildingResult.getDependencyResolutionResult());
        }
        result.addException(ex);
    } catch (RuntimeException e) {
        result.addException(e);
    } finally {
        // $NON-NLS-1$
        log.debug("Read Maven project: {} in {} ms", pomFile.getAbsoluteFile(), System.currentTimeMillis() - start);
    }
    return result;
}
Also used : ProjectBuildingException(org.apache.maven.project.ProjectBuildingException) ProjectBuilder(org.apache.maven.project.ProjectBuilder) ProjectBuildingResult(org.apache.maven.project.ProjectBuildingResult) DefaultMavenExecutionResult(org.apache.maven.execution.DefaultMavenExecutionResult) MavenExecutionResult(org.apache.maven.execution.MavenExecutionResult) DefaultMavenExecutionResult(org.apache.maven.execution.DefaultMavenExecutionResult)

Example 14 with ProjectBuildingResult

use of org.apache.maven.project.ProjectBuildingResult in project maven-plugins by apache.

the class ShadeMojo method rewriteDependencyReducedPomIfWeHaveReduction.

private void rewriteDependencyReducedPomIfWeHaveReduction(List<Dependency> dependencies, boolean modified, List<Dependency> transitiveDeps, Model model) throws IOException, ProjectBuildingException, DependencyGraphBuilderException {
    if (modified) {
        for (int loopCounter = 0; modified; loopCounter++) {
            model.setDependencies(dependencies);
            if (generateUniqueDependencyReducedPom) {
                dependencyReducedPomLocation = File.createTempFile("dependency-reduced-pom-", ".xml", project.getBasedir());
                project.getProperties().setProperty("maven.shade.dependency-reduced-pom", dependencyReducedPomLocation.getAbsolutePath());
            } else {
                if (dependencyReducedPomLocation == null) {
                    // MSHADE-123: We can't default to 'target' because it messes up uses of ${project.basedir}
                    dependencyReducedPomLocation = new File(project.getBasedir(), "dependency-reduced-pom.xml");
                }
            }
            File f = dependencyReducedPomLocation;
            // Works for now, maybe there's a better algorithm where no for-loop is required
            if (loopCounter == 0) {
                getLog().info("Dependency-reduced POM written at: " + f.getAbsolutePath());
            }
            if (f.exists()) {
                // noinspection ResultOfMethodCallIgnored
                f.delete();
            }
            Writer w = WriterFactory.newXmlWriter(f);
            String replaceRelativePath = null;
            if (model.getParent() != null) {
                replaceRelativePath = model.getParent().getRelativePath();
            }
            if (model.getParent() != null) {
                File parentFile = new File(project.getBasedir(), model.getParent().getRelativePath()).getCanonicalFile();
                if (!parentFile.isFile()) {
                    parentFile = new File(parentFile, "pom.xml");
                }
                parentFile = parentFile.getCanonicalFile();
                String relPath = RelativizePath.convertToRelativePath(parentFile, f);
                model.getParent().setRelativePath(relPath);
            }
            try {
                PomWriter.write(w, model, true);
            } finally {
                if (model.getParent() != null) {
                    model.getParent().setRelativePath(replaceRelativePath);
                }
                w.close();
            }
            ProjectBuildingRequest projectBuildingRequest = new DefaultProjectBuildingRequest(session.getProjectBuildingRequest());
            projectBuildingRequest.setLocalRepository(localRepository);
            projectBuildingRequest.setRemoteRepositories(remoteArtifactRepositories);
            ProjectBuildingResult result = projectBuilder.build(f, projectBuildingRequest);
            getLog().debug("updateExcludesInDeps()");
            modified = updateExcludesInDeps(result.getProject(), dependencies, transitiveDeps);
        }
        project.setFile(dependencyReducedPomLocation);
    }
}
Also used : DefaultProjectBuildingRequest(org.apache.maven.project.DefaultProjectBuildingRequest) ProjectBuildingRequest(org.apache.maven.project.ProjectBuildingRequest) ProjectBuildingResult(org.apache.maven.project.ProjectBuildingResult) File(java.io.File) Writer(java.io.Writer) PomWriter(org.apache.maven.plugins.shade.pom.PomWriter) DefaultProjectBuildingRequest(org.apache.maven.project.DefaultProjectBuildingRequest)

Example 15 with ProjectBuildingResult

use of org.apache.maven.project.ProjectBuildingResult in project maven-plugins by apache.

the class AddDependencySetsTask method addDependencySet.

void addDependencySet(final DependencySet dependencySet, final Archiver archiver, final AssemblerConfigurationSource configSource) throws AssemblyFormattingException, ArchiveCreationException, InvalidAssemblerConfigurationException {
    logger.debug("Processing DependencySet (output=" + dependencySet.getOutputDirectory() + ")");
    if (!dependencySet.isUseTransitiveDependencies() && dependencySet.isUseTransitiveFiltering()) {
        logger.warn("DependencySet has nonsensical configuration: useTransitiveDependencies == false " + "AND useTransitiveFiltering == true. Transitive filtering flag will be ignored.");
    }
    final Set<Artifact> dependencyArtifacts = resolveDependencyArtifacts(dependencySet);
    if (!unpackTransformsContent(dependencySet) && dependencyArtifacts.size() > 1) {
        checkMultiArtifactOutputConfig(dependencySet);
    }
    logger.debug("Adding " + dependencyArtifacts.size() + " dependency artifacts.");
    InputStreamTransformer fileSetTransformers = isUnpackWithOptions(dependencySet) ? ReaderFormatter.getFileSetTransformers(configSource, dependencySet.getUnpackOptions().isFiltered(), dependencySet.getUnpackOptions().getLineEnding()) : null;
    for (final Artifact depArtifact : dependencyArtifacts) {
        ProjectBuildingRequest pbr = getProjectBuildingRequest(configSource);
        MavenProject depProject;
        try {
            ProjectBuildingResult build = projectBuilder1.build(depArtifact, pbr);
            depProject = build.getProject();
        } catch (final ProjectBuildingException e) {
            logger.debug("Error retrieving POM of module-dependency: " + depArtifact.getId() + "; Reason: " + e.getMessage() + "\n\nBuilding stub project instance.");
            depProject = buildProjectStub(depArtifact);
        }
        if (NON_ARCHIVE_DEPENDENCY_TYPES.contains(depArtifact.getType())) {
            addNonArchiveDependency(depArtifact, depProject, dependencySet, archiver, configSource);
        } else {
            addNormalArtifact(dependencySet, depArtifact, depProject, archiver, configSource, fileSetTransformers);
        }
    }
}
Also used : ProjectBuildingRequest(org.apache.maven.project.ProjectBuildingRequest) ProjectBuildingException(org.apache.maven.project.ProjectBuildingException) MavenProject(org.apache.maven.project.MavenProject) ProjectBuildingResult(org.apache.maven.project.ProjectBuildingResult) InputStreamTransformer(org.codehaus.plexus.components.io.functions.InputStreamTransformer) Artifact(org.apache.maven.artifact.Artifact)

Aggregations

ProjectBuildingResult (org.apache.maven.project.ProjectBuildingResult)15 MavenProject (org.apache.maven.project.MavenProject)9 ProjectBuilder (org.apache.maven.project.ProjectBuilder)9 ProjectBuildingException (org.apache.maven.project.ProjectBuildingException)9 DefaultProjectBuildingRequest (org.apache.maven.project.DefaultProjectBuildingRequest)6 ProjectBuildingRequest (org.apache.maven.project.ProjectBuildingRequest)6 IOException (java.io.IOException)5 ArrayList (java.util.ArrayList)4 MavenExecutionRequest (org.apache.maven.execution.MavenExecutionRequest)4 File (java.io.File)3 Artifact (org.apache.maven.artifact.Artifact)3 Writer (java.io.Writer)2 RemoteException (java.rmi.RemoteException)2 Properties (java.util.Properties)2 InvalidRepositoryException (org.apache.maven.artifact.InvalidRepositoryException)2 DefaultMavenExecutionRequest (org.apache.maven.execution.DefaultMavenExecutionRequest)2 DefaultMavenExecutionResult (org.apache.maven.execution.DefaultMavenExecutionResult)2 MavenExecutionResult (org.apache.maven.execution.MavenExecutionResult)2 MojoExecutionException (org.apache.maven.plugin.MojoExecutionException)2 ComponentLookupException (org.codehaus.plexus.component.repository.exception.ComponentLookupException)2