Example usage for org.apache.maven.project DefaultProjectBuildingRequest DefaultProjectBuildingRequest

List of usage examples for org.apache.maven.project DefaultProjectBuildingRequest DefaultProjectBuildingRequest

Introduction

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

Prototype

public DefaultProjectBuildingRequest(ProjectBuildingRequest request) 

Source Link

Usage

From source file:com.github.veithen.phos.jacoco.AggregateReportMojo.java

License:Apache License

private File resolveArtifact(Artifact baseArtifact, String classifier, String type, boolean localOnly,
        boolean allowMissing) throws MojoExecutionException {
    ProjectBuildingRequest projectBuildingRequest = session.getProjectBuildingRequest();
    if (localOnly) {
        projectBuildingRequest = new DefaultProjectBuildingRequest(projectBuildingRequest);
        projectBuildingRequest.setRemoteRepositories(Collections.<ArtifactRepository>emptyList());
    }/*ww w.j  ava2  s. c  om*/
    Dependency dependency = new Dependency();
    dependency.setGroupId(baseArtifact.getGroupId());
    dependency.setArtifactId(baseArtifact.getArtifactId());
    dependency.setVersion(baseArtifact.getVersion());
    dependency.setType(type);
    dependency.setClassifier(classifier);
    dependency.setScope(Artifact.SCOPE_COMPILE);
    Artifact artifact = repositorySystem.createDependencyArtifact(dependency);
    try {
        return resolver.resolveArtifact(projectBuildingRequest, artifact).getArtifact().getFile();
    } catch (ArtifactResolverException ex) {
        if (allowMissing) {
            return null;
        } else {
            throw new MojoExecutionException("Unable to resolve artifact", ex);
        }
    }
}

From source file:com.github.wcy123.maven.launcher.RunnerMojo.java

License:Apache License

@Override
public void execute() throws MojoExecutionException, MojoFailureException {
    if (isSkip()) {
        getLog().info("Skipping plugin execution");
        return;/* w  ww .j  a v a 2 s  .  com*/
    }

    if (coordinate.getArtifactId() == null && artifact == null) {
        throw new MojoFailureException("You must specify an artifact, "
                + "e.g. -Dartifact=org.apache.maven.plugins:maven-downloader-plugin:1.0");
    }
    if (artifact != null) {
        String[] tokens = StringUtils.split(artifact, ":");
        if (tokens.length < 3 || tokens.length > 5) {
            throw new MojoFailureException(
                    "Invalid artifact, you must specify groupId:artifactId:version[:packaging[:classifier]] "
                            + artifact);
        }
        coordinate.setGroupId(tokens[0]);
        coordinate.setArtifactId(tokens[1]);
        coordinate.setVersion(tokens[2]);
        if (tokens.length >= 4) {
            coordinate.setType(tokens[3]);
        }
        if (tokens.length == 5) {
            coordinate.setClassifier(tokens[4]);
        }
    }

    ArtifactRepositoryPolicy always = new ArtifactRepositoryPolicy(true,
            ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN);

    List<ArtifactRepository> repoList = new ArrayList<ArtifactRepository>();

    if (pomRemoteRepositories != null) {
        repoList.addAll(pomRemoteRepositories);
    }

    if (remoteRepositories != null) {
        // Use the same format as in the deploy plugin id::layout::url
        List<String> repos = Arrays.asList(StringUtils.split(remoteRepositories, ","));
        for (String repo : repos) {
            repoList.add(parseRepository(repo, always));
        }
    }

    try {
        ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest(
                session.getProjectBuildingRequest());
        buildingRequest.setProject(session.getCurrentProject());
        buildingRequest.setRemoteRepositories(repoList);

        getLog().info("Resolving " + coordinate + " with transitive dependencies");

        // FIXME
        // artifactResolver.resolveArtifact( buildingRequest, coordinate );

        final Iterable<ArtifactResult> artifactResults = dependencyResolver.resolveDependencies(buildingRequest,
                coordinate, null);

        // start from here
        if (!artifactResults.iterator().hasNext()) {
            getLog().error("cannot find the first artifcat");
            return;
        }
        List<Artifact> listOfArtifacts = new ArrayList<>();
        for (ArtifactResult artifactResult : artifactResults) {
            getLog().info("artifacts " + artifactResult.getArtifact());
            listOfArtifacts.add(artifactResolver.resolveArtifact(buildingRequest, artifactResult.getArtifact())
                    .getArtifact());

        }
        URL[] urls = new URL[listOfArtifacts.size()];
        for (int i = 0; i < urls.length; ++i) {
            urls[i] = listOfArtifacts.get(i).getFile().toURI().toURL();
        }
        final SharedUrlClassLoader classLoader = SharedUrlClassLoader.create(urls);

        final JarFile jarFile = new JarFile(urls[0].getFile());
        final Manifest manifest = jarFile.getManifest();
        String value = manifest.getMainAttributes().getValue("Main-Class");
        // final String charSequence = "cannot find Main-Class: " +
        // manifest.getMainAttributes().entrySet().stream().map(e -> e.getKey() + ":" +
        // e.getValue()).collect(Collectors.joining("\n"));
        if (value == null) {
            throw new MojoFailureException("cannot find Main-Class " + classLoader.getURLs());
        }
        value = "com.wcy123.HelloWorldApplication";
        System.out.println("value is value " + value);
        final Class<?> aClass = Class.forName(value, true, classLoader);
        final Method main = aClass.getMethod("main", String[].class);
        Thread runnerThread = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    main.invoke(null, new Object[] { new String[] { "hello", "world" } });
                } catch (IllegalAccessException | InvocationTargetException e) {
                    e.printStackTrace();
                }
            }
        });
        runnerThread.setContextClassLoader(classLoader);
        runnerThread.start();
        runnerThread.join();
    } catch (DependencyResolverException e) {
        throw new MojoExecutionException("Couldn't download artifact: " + e.getMessage(), e);
    } catch (IOException e) {
        getLog().error("cannot create class loader", e);
        throw new MojoFailureException("cannot create class loader");
    } catch (ArtifactResolverException e) {
        getLog().error("cannot resolve artifact", e);
        throw new MojoFailureException("cannot resolve artifact");
    } catch (ClassNotFoundException e) {
        getLog().error("cannot load Main-Class", e);
        throw new MojoFailureException("cannot load Main-Class");
    } catch (NoSuchMethodException e) {
        getLog().error("cannot get main method", e);
        throw new MojoFailureException("cannot get main method");
    } catch (InterruptedException e) {
        getLog().error("interrupted", e);
    }
}

From source file:com.teamtter.simplelicenses.GenerateDependenciesLicenseInfoMojo.java

private void generateDependenciesLicenseInfo() throws ProjectBuildingException {
    Artifacts2LicensesRepository repo = new Artifacts2LicensesRepository();

    ProjectBuildingRequest request = new DefaultProjectBuildingRequest(session.getProjectBuildingRequest());
    // Build the project and get the result

    List<Artifact> runtimeArtifacts = mavenProject.getRuntimeArtifacts();
    for (Artifact artifact : runtimeArtifacts) {
        MavenProject project = projectBuilder.build(artifact, request).getProject();
        List<String> licenses = project.getLicenses();
        log.info("licenses = {}", licenses);
        repo.add(artifact, project.getLicenses());
    }// ww w  . j  a  va 2 s  .  co m

}

From source file:com.xpn.xwiki.tool.backup.AbstractImportMojo.java

License:Open Source License

protected MavenProject getMavenProject(Artifact artifact) throws MojoExecutionException {
    try {//from  w w w  . ja  v a  2s .  c  o m
        ProjectBuildingRequest request = new DefaultProjectBuildingRequest(
                this.session.getProjectBuildingRequest())
                        // We don't want to execute any plugin here
                        .setProcessPlugins(false)
                        // It's not this plugin job to validate this pom.xml
                        .setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL)
                        // Use the repositories configured for the built project instead of the default Maven ones
                        .setRemoteRepositories(
                                this.session.getCurrentProject().getRemoteArtifactRepositories());
        // Note: build() will automatically get the POM artifact corresponding to the passed artifact.
        ProjectBuildingResult result = this.projectBuilder.build(artifact, request);
        return result.getProject();
    } catch (ProjectBuildingException e) {
        throw new MojoExecutionException(String.format("Failed to build project for [%s]", artifact), e);
    }
}

From source file:com.xwikisas.xcs.tools.dependenciespackager.PackageExtensionsMojo.java

License:Open Source License

private MavenProject getMavenProject(Artifact artifact) throws MojoExecutionException {
    try {//from  ww  w . jav a  2s .  c o m
        ProjectBuildingRequest request = new DefaultProjectBuildingRequest(
                this.session.getProjectBuildingRequest())
                        // We don't want to execute any plugin here
                        .setProcessPlugins(false)
                        // It's not this plugin job to validate this pom.xml
                        .setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL)
                        // Use the repositories configured for the built project instead of the default Maven ones
                        .setRemoteRepositories(
                                this.session.getCurrentProject().getRemoteArtifactRepositories());
        // Note: build() will automatically get the POM artifact corresponding to the passed artifact.
        ProjectBuildingResult result = this.projectBuilder.build(artifact, request);
        return result.getProject();
    } catch (ProjectBuildingException e) {
        throw new MojoExecutionException(String.format("Failed to build project for [%s]", artifact), e);
    }
}

From source file:io.syndesis.maven.ExtractConnectorDescriptorsMojo.java

License:Apache License

@Override
@SuppressWarnings("PMD.EmptyCatchBlock")
public void execute() throws MojoExecutionException, MojoFailureException {

    ArrayNode root = new ArrayNode(JsonNodeFactory.instance);

    URLClassLoader classLoader = null;
    try {/*  w  ww .  j ava 2  s  .  co m*/
        PluginDescriptor desc = (PluginDescriptor) getPluginContext().get("pluginDescriptor");
        List<Artifact> artifacts = desc.getArtifacts();
        ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest(
                session.getProjectBuildingRequest());
        buildingRequest.setRemoteRepositories(remoteRepositories);
        for (Artifact artifact : artifacts) {
            ArtifactResult result = artifactResolver.resolveArtifact(buildingRequest, artifact);
            File jar = result.getArtifact().getFile();
            classLoader = createClassLoader(jar);
            if (classLoader == null) {
                throw new IOException("Can not create classloader for " + jar);
            }
            ObjectNode entry = new ObjectNode(JsonNodeFactory.instance);
            addConnectorMeta(entry, classLoader);
            addComponentMeta(entry, classLoader);
            if (entry.size() > 0) {
                addGav(entry, artifact);
                root.add(entry);
            }
        }
        if (root.size() > 0) {
            saveCamelMetaData(root);
        }
    } catch (ArtifactResolverException | IOException e) {
        throw new MojoExecutionException(e.getMessage(), e);
    } finally {
        if (classLoader != null) {
            try {
                classLoader.close();
            } catch (IOException ignored) {

            }
        }
    }
}

From source file:net.oneandone.maven.plugins.prerelease.util.Maven.java

License:Apache License

public MavenProject loadPom(FileNode file) throws ProjectBuildingException {
    ProjectBuildingRequest request;//from   w w  w . j av  a2s. com
    ProjectBuildingResult result;

    // session initializes the repository session in the build request
    request = new DefaultProjectBuildingRequest(parentSession.getProjectBuildingRequest());
    request.setRemoteRepositories(remoteRepositories);
    request.setProcessPlugins(false);
    request.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL);
    request.setSystemProperties(System.getProperties());
    //If you don't turn this into RepositoryMerging.REQUEST_DOMINANT the dependencies will be resolved against Maven Central
    //and not against the configured repositories. The default of the DefaultProjectBuildingRequest is
    // RepositoryMerging.POM_DOMINANT.
    request.setRepositoryMerging(ProjectBuildingRequest.RepositoryMerging.REQUEST_DOMINANT);
    request.setResolveDependencies(false);
    result = builder.build(file.toPath().toFile(), request);
    return result.getProject();
}

From source file:org.apifocal.maven.plugins.bom.AbstractBomMojo.java

License:Apache License

protected void importProperties(Dependency artifactMetadata) throws MojoExecutionException {
    try {/*w ww. ja  va 2s. c o  m*/
        Artifact artifact = repoSystem.createDependencyArtifact(artifactMetadata);
        getLog().info("Importing properties from " + artifact);

        ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest(
                session.getProjectBuildingRequest());
        buildingRequest.setProject(null);
        buildingRequest.setResolveDependencies(false);
        MavenProject bomProject = projectBuilder.build(artifact, buildingRequest).getProject();

        bomProject.getProperties()
                .forEach((Object key, Object value) -> project.getProperties().putIfAbsent(key, value));
    } catch (ProjectBuildingException ex) {
        getLog().error("Failed to resolve artifact", ex);
        throw new MojoExecutionException("Could not read artifact " + artifactMetadata.toString(), ex);
    }
}

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

License:Apache License

public synchronized ProjectBuildingRequest getProjectBuildingRequest(final ProjectToolsSession session)
        throws ProjectToolsException {
    ProjectBuildingRequest pbr = session.getProjectBuildingRequest();
    try {//from  w  w w  .j a va2  s  .  c o m
        if (pbr == null) {
            pbr = emb.serviceManager().createProjectBuildingRequest();

            pbr.setProcessPlugins(false);
            pbr.setResolveDependencies(false);
            pbr.setSystemProperties(System.getProperties());
            pbr.setInactiveProfileIds(new ArrayList<String>());
            pbr.setRepositoryMerging(ProjectBuildingRequest.RepositoryMerging.REQUEST_DOMINANT);

            final RepositorySystemSession rss = getRepositorySystemSession(session);
            pbr.setRepositorySession(rss);
            pbr.setLocalRepository(
                    mavenRepositorySystem.createLocalRepository(rss.getLocalRepository().getBasedir()));
            pbr.setRemoteRepositories(getArtifactRepositories(session));

            session.setProjectBuildingRequest(pbr);
        } else {
            pbr = new DefaultProjectBuildingRequest(pbr);
            pbr.setRepositorySession(getRepositorySystemSession(session));
        }
    } catch (final EMBException e) {
        throw new ProjectToolsException("Failed to create project-building request: %s", e, e.getMessage());
    } catch (final InvalidRepositoryException e) {
        throw new ProjectToolsException("Failed to create local-repository instance. Reason: %s", e,
                e.getMessage());
    }

    return pbr;
}

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

License:Apache License

/**
 * {@inheritDoc}//  w  w  w . ja  v a  2s  . com
 * 
 * @see org.commonjava.emb.project.ProjectToolsSession#copyOf(org.commonjava.emb.project.ProjectToolsSession)
 */
@Override
public ProjectToolsSession copy() {
    final SimpleProjectToolsSession copy = new SimpleProjectToolsSession(workdir, resolveRepositories);
    copy.dependencyGraph = dependencyGraph;

    copy.projectBuildingRequest = projectBuildingRequest == null ? null
            : new DefaultProjectBuildingRequest(projectBuildingRequest);

    copy.reactorProjects = new LinkedHashMap<String, MavenProject>(reactorProjects);

    copy.remoteArtifactRepositories = remoteArtifactRepositories == null ? null
            : new ArrayList<ArtifactRepository>(remoteArtifactRepositories);

    copy.remoteRepositories = remoteRepositories == null ? null
            : new ArrayList<RemoteRepository>(remoteRepositories);

    copy.repositorySystemSession = repositorySystemSession == null ? null
            : new DefaultRepositorySystemSession(repositorySystemSession);

    return copy;
}