Example usage for org.apache.maven.model.building ModelBuildingRequest setModelResolver

List of usage examples for org.apache.maven.model.building ModelBuildingRequest setModelResolver

Introduction

In this page you can find the example usage for org.apache.maven.model.building ModelBuildingRequest setModelResolver.

Prototype

ModelBuildingRequest setModelResolver(ModelResolver modelResolver);

Source Link

Document

Sets the model resolver to use for resolution of mixins or parents that are not locally reachable from the project directory.

Usage

From source file:biz.itcf.maven.plugins.dependencytransfer.TransferMojo.java

License:Apache License

private ArtifactResult resolveParent(Artifact pomArtifact) throws MojoFailureException {
    try {/*from  w  w w . j  av a  2 s  .c o m*/
        ModelBuildingRequest buildingRequest = new DefaultModelBuildingRequest();
        buildingRequest.setModelResolver(new AvailableModelResolver(repoSession, null, null, artifactResolver,
                remoteRepositoryManager, projectRepos));
        buildingRequest.setPomFile(pomArtifact.getFile());
        buildingRequest.setTwoPhaseBuilding(false);
        buildingRequest.setSystemProperties(System.getProperties());
        buildingRequest.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL);

        ModelBuildingResult build = modelBuilder.build(buildingRequest);
        Parent dependencyParent = build.getRawModel().getParent();
        if (dependencyParent != null) {
            ArtifactRequest parentArtifactRequest = new ArtifactRequest();
            parentArtifactRequest.setArtifact(new DefaultArtifact(dependencyParent.getGroupId(),
                    dependencyParent.getArtifactId(), "pom", dependencyParent.getVersion()));
            parentArtifactRequest.setRepositories(projectRepos);
            return repoSystem.resolveArtifact(repoSession, parentArtifactRequest);
        } else {
            return null;
        }
    } catch (ArtifactResolutionException e) {
        throw new MojoFailureException("Could not resolve parent artifact.", e);
    } catch (ModelBuildingException e) {
        throw new MojoFailureException("Could not build Maven model for given artifact.", e);
    }
}

From source file:com.bennavetta.util.tycho.maven.Maven.java

License:Apache License

public static Model createModel(File pom) throws ModelBuildingException, ComponentLookupException {
    ModelBuilder builder = mavenContainer.lookup(ModelBuilder.class);
    ModelBuildingRequest req = new DefaultModelBuildingRequest();
    req.setProcessPlugins(false);/* ww  w  .j ava 2s . c  om*/
    req.setModelResolver(new RepoModelResolver());
    req.setPomFile(pom);
    return builder.build(req).getEffectiveModel();
}

From source file:com.buschmais.jqassistant.plugin.m2repo.impl.scanner.EffectiveModelBuilder.java

@Override
public Model getModel(final File pomFile) throws IOException {
    DefaultModelBuilder builder = new DefaultModelBuilderFactory().newInstance();
    ModelBuildingRequest req = new DefaultModelBuildingRequest();
    req.setProcessPlugins(false);/*from  w  ww  .  ja  v  a2 s  .co  m*/
    req.setPomFile(pomFile);
    req.setModelResolver(modelResolver);
    req.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL);
    req.setSystemProperties(System.getProperties());
    builder.setModelValidator(new ModelValidatorImpl());
    try {
        return builder.build(req).getEffectiveModel();
    } catch (ModelBuildingException e) {
        LOGGER.warn("Cannot build effective model for " + pomFile.getAbsolutePath(), e);
        return new EffectiveModel(rawModelBuilder.getModel(pomFile));
    }
}

From source file:com.github.nethad.clustermeister.provisioning.dependencymanager.MavenRepositorySystem.java

License:Apache License

/**
 * Resolve the effective Maven model (pom) for a POM file.
 * /*  ww  w .j a va 2  s  .  c  o m*/
 * This resolves the POM hierarchy (parents and modules) and creates an 
 * overall model.
 * 
 * @param pom the POM file to resolve.
 * @return the effective model.
 */
protected Model getEffectiveModel(File pom) {
    ModelBuildingRequest req = new DefaultModelBuildingRequest();
    req.setProcessPlugins(false);
    req.setPomFile(pom);
    req.setModelResolver(new SimpleModelResolver(repositorySystem, createSession(),
            getRepositories(Collections.EMPTY_LIST)));
    req.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL);

    ModelBuilder builder = new DefaultModelBuilderFactory().newInstance();
    try {
        return builder.build(req).getEffectiveModel();
    } catch (ModelBuildingException ex) {
        logger.warn("Could not build maven model.", ex);
    }

    return new Model();
}

From source file:com.tobedevoured.naether.maven.Project.java

License:Apache License

/**
 * Load Maven pom/*  ww  w  .ja v  a2 s .  c  om*/
 *
 * @param pomPath String path
 * @param localRepo String
 * @param repositories {@link Collection<RemoteRepository>}
 * @return {@link Model}
 * @throws ProjectException if fails to open, read, or parse the POM
 */
public static Model loadPOM(String pomPath, String localRepo, Collection<RemoteRepository> repositories)
        throws ProjectException {
    RepositoryClient repoClient = new RepositoryClient(localRepo);
    NaetherModelResolver resolver = new NaetherModelResolver(repoClient, repositories);

    ModelBuildingRequest req = new DefaultModelBuildingRequest();
    req.setProcessPlugins(false);
    req.setPomFile(new File(pomPath));
    req.setModelResolver(resolver);
    req.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL);

    DefaultModelBuilder builder = (new DefaultModelBuilderFactory()).newInstance();
    try {
        return builder.build(req).getEffectiveModel();
    } catch (ModelBuildingException e) {
        throw new ProjectException("Failed to build project from pom", e);
    }
}

From source file:fr.inria.spirals.repairnator.process.maven.MavenHelper.java

public static Model readPomXml(File pomXml, String localMavenRepository) {
    ModelBuildingRequest req = new DefaultModelBuildingRequest();
    req.setProcessPlugins(true);/*from  w w w  . j av a2  s.  com*/
    req.setPomFile(pomXml);
    req.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL);
    req.setModelResolver(new RepositoryModelResolver(localMavenRepository));

    DefaultModelBuilder defaultModelBuilder = new DefaultModelBuilderFactory().newInstance();

    // we try to build the model, and if we fail, we try to get the raw model
    try {
        ModelBuildingResult modelBuildingResult = defaultModelBuilder.build(req);
        return modelBuildingResult.getEffectiveModel();
    } catch (ModelBuildingException e) {
        LOGGER.error("Error while building complete model. The raw model will be used. Error message: "
                + e.getMessage());
        return defaultModelBuilder.buildRawModel(pomXml, ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL, true)
                .get();
    }

}

From source file:io.tesla.aether.internal.DefaultTeslaAether.java

License:Open Source License

public Model resolveModel(File pom) throws ModelBuildingException {

    RequestTrace trace = new RequestTrace(pom);
    ModelBuildingRequest modelRequest = new DefaultModelBuildingRequest();
    modelRequest.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL);
    modelRequest.setProcessPlugins(false);
    modelRequest.setTwoPhaseBuilding(false);
    modelRequest.setSystemProperties(toProperties(session.getUserProperties(), session.getSystemProperties()));
    ///*from   w ww. j  av a 2s .co  m*/
    // The model cache and default model resolver should be injected
    //
    modelRequest.setModelCache(new DefaultModelCache());
    modelRequest.setModelResolver(new DefaultModelResolver(session, trace.newChild(modelRequest), "bithub",
            artifactResolver, remoteRepositoryManager, remoteRepositories));
    modelRequest.setPomFile(pom);
    return modelBuilder.build(modelRequest).getEffectiveModel();
}

From source file:io.tesla.maven.bridge.support.model.internal.MavenModelResolverSupport.java

License:Open Source License

@Override
public Model resolveModel(final ModelBuildingRequest request, final RepositorySystemSession session,
        final RemoteRepository... repositories) throws ModelBuildingException {
    assertNotNull(session, session.getClass());

    request.setModelResolver(new ModelResolverProxy(session, repositories));
    if (request.getModelSource() instanceof ArtifactModelSource) {
        final ArtifactModelSource source = (ArtifactModelSource) request.getModelSource();
        source.resolver = new ModelResolverProxy(session, repositories);
    }/*from ww  w.  ja  v  a 2s .  co  m*/
    final ModelBuildingResult modelResult = modelBuilder.build(request);
    return modelResult.getEffectiveModel();
}

From source file:org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryStorage.java

License:Apache License

@Override
public ProjectVersionMetadata readProjectVersionMetadata(ReadMetadataRequest readMetadataRequest)
        throws RepositoryStorageMetadataNotFoundException, RepositoryStorageMetadataInvalidException,
        RepositoryStorageRuntimeException {
    try {//from  w ww .  j a va 2  s .co  m
        ManagedRepository managedRepository = managedRepositoryAdmin
                .getManagedRepository(readMetadataRequest.getRepositoryId());
        String artifactVersion = readMetadataRequest.getProjectVersion();
        // olamy: in case of browsing via the ui we can mix repos (parent of a SNAPSHOT can come from release repo)
        if (!readMetadataRequest.isBrowsingRequest()) {
            if (VersionUtil.isSnapshot(artifactVersion)) {
                // skygo trying to improve speed by honoring managed configuration MRM-1658
                if (managedRepository.isReleases() && !managedRepository.isSnapshots()) {
                    throw new RepositoryStorageRuntimeException("lookforsnaponreleaseonly",
                            "managed repo is configured for release only");
                }
            } else {
                if (!managedRepository.isReleases() && managedRepository.isSnapshots()) {
                    throw new RepositoryStorageRuntimeException("lookforsreleaseonsneponly",
                            "managed repo is configured for snapshot only");
                }
            }
        }
        File basedir = new File(managedRepository.getLocation());
        if (VersionUtil.isSnapshot(artifactVersion)) {
            File metadataFile = pathTranslator.toFile(basedir, readMetadataRequest.getNamespace(),
                    readMetadataRequest.getProjectId(), artifactVersion, METADATA_FILENAME);
            try {
                ArchivaRepositoryMetadata metadata = MavenMetadataReader.read(metadataFile);

                // re-adjust to timestamp if present, otherwise retain the original -SNAPSHOT filename
                SnapshotVersion snapshotVersion = metadata.getSnapshotVersion();
                if (snapshotVersion != null) {
                    artifactVersion = artifactVersion.substring(0, artifactVersion.length() - 8); // remove SNAPSHOT from end
                    artifactVersion = artifactVersion + snapshotVersion.getTimestamp() + "-"
                            + snapshotVersion.getBuildNumber();
                }
            } catch (XMLException e) {
                // unable to parse metadata - LOGGER it, and continue with the version as the original SNAPSHOT version
                LOGGER.warn("Invalid metadata: {} - {}", metadataFile, e.getMessage());
            }
        }

        // TODO: won't work well with some other layouts, might need to convert artifact parts to ID by path translator
        String id = readMetadataRequest.getProjectId() + "-" + artifactVersion + ".pom";
        File file = pathTranslator.toFile(basedir, readMetadataRequest.getNamespace(),
                readMetadataRequest.getProjectId(), readMetadataRequest.getProjectVersion(), id);

        if (!file.exists()) {
            // metadata could not be resolved
            throw new RepositoryStorageMetadataNotFoundException(
                    "The artifact's POM file '" + file.getAbsolutePath() + "' was missing");
        }

        // TODO: this is a workaround until we can properly resolve using proxies as well - this doesn't cache
        //       anything locally!
        List<RemoteRepository> remoteRepositories = new ArrayList<>();
        Map<String, NetworkProxy> networkProxies = new HashMap<>();

        Map<String, List<ProxyConnector>> proxyConnectorsMap = proxyConnectorAdmin.getProxyConnectorAsMap();
        List<ProxyConnector> proxyConnectors = proxyConnectorsMap.get(readMetadataRequest.getRepositoryId());
        if (proxyConnectors != null) {
            for (ProxyConnector proxyConnector : proxyConnectors) {
                RemoteRepository remoteRepoConfig = remoteRepositoryAdmin
                        .getRemoteRepository(proxyConnector.getTargetRepoId());

                if (remoteRepoConfig != null) {
                    remoteRepositories.add(remoteRepoConfig);

                    NetworkProxy networkProxyConfig = networkProxyAdmin
                            .getNetworkProxy(proxyConnector.getProxyId());

                    if (networkProxyConfig != null) {
                        // key/value: remote repo ID/proxy info
                        networkProxies.put(proxyConnector.getTargetRepoId(), networkProxyConfig);
                    }
                }
            }
        }

        // That's a browsing request so we can a mix of SNAPSHOT and release artifacts (especially with snapshots which
        // can have released parent pom
        if (readMetadataRequest.isBrowsingRequest()) {
            remoteRepositories.addAll(remoteRepositoryAdmin.getRemoteRepositories());
        }

        ModelBuildingRequest req = new DefaultModelBuildingRequest().setProcessPlugins(false).setPomFile(file)
                .setTwoPhaseBuilding(false).setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL);

        //MRM-1607. olamy this will resolve jdk profiles on the current running archiva jvm
        req.setSystemProperties(System.getProperties());

        // MRM-1411
        req.setModelResolver(new RepositoryModelResolver(managedRepository, pathTranslator, wagonFactory,
                remoteRepositories, networkProxies, managedRepository));

        Model model;
        try {
            model = builder.build(req).getEffectiveModel();
        } catch (ModelBuildingException e) {
            String msg = "The artifact's POM file '" + file + "' was invalid: " + e.getMessage();

            List<ModelProblem> modelProblems = e.getProblems();
            for (ModelProblem problem : modelProblems) {
                // MRM-1411, related to MRM-1335
                // this means that the problem was that the parent wasn't resolved!
                // olamy really hackhish but fail with java profile so use error message
                // || ( StringUtils.startsWith( problem.getMessage(), "Failed to determine Java version for profile" ) )
                // but setTwoPhaseBuilding(true) fix that
                if ((problem.getException() instanceof FileNotFoundException && e.getModelId() != null
                        && !e.getModelId().equals(problem.getModelId()))) {
                    LOGGER.warn("The artifact's parent POM file '{}' cannot be resolved. "
                            + "Using defaults for project version metadata..", file);

                    ProjectVersionMetadata metadata = new ProjectVersionMetadata();
                    metadata.setId(readMetadataRequest.getProjectVersion());

                    MavenProjectFacet facet = new MavenProjectFacet();
                    facet.setGroupId(readMetadataRequest.getNamespace());
                    facet.setArtifactId(readMetadataRequest.getProjectId());
                    facet.setPackaging("jar");
                    metadata.addFacet(facet);

                    String errMsg = "Error in resolving artifact's parent POM file. "
                            + (problem.getException() == null ? problem.getMessage()
                                    : problem.getException().getMessage());
                    RepositoryProblemFacet repoProblemFacet = new RepositoryProblemFacet();
                    repoProblemFacet.setRepositoryId(readMetadataRequest.getRepositoryId());
                    repoProblemFacet.setId(readMetadataRequest.getRepositoryId());
                    repoProblemFacet.setMessage(errMsg);
                    repoProblemFacet.setProblem(errMsg);
                    repoProblemFacet.setProject(readMetadataRequest.getProjectId());
                    repoProblemFacet.setVersion(readMetadataRequest.getProjectVersion());
                    repoProblemFacet.setNamespace(readMetadataRequest.getNamespace());

                    metadata.addFacet(repoProblemFacet);

                    return metadata;
                }
            }

            throw new RepositoryStorageMetadataInvalidException("invalid-pom", msg, e);
        }

        // Check if the POM is in the correct location
        boolean correctGroupId = readMetadataRequest.getNamespace().equals(model.getGroupId());
        boolean correctArtifactId = readMetadataRequest.getProjectId().equals(model.getArtifactId());
        boolean correctVersion = readMetadataRequest.getProjectVersion().equals(model.getVersion());
        if (!correctGroupId || !correctArtifactId || !correctVersion) {
            StringBuilder message = new StringBuilder("Incorrect POM coordinates in '" + file + "':");
            if (!correctGroupId) {
                message.append("\nIncorrect group ID: ").append(model.getGroupId());
            }
            if (!correctArtifactId) {
                message.append("\nIncorrect artifact ID: ").append(model.getArtifactId());
            }
            if (!correctVersion) {
                message.append("\nIncorrect version: ").append(model.getVersion());
            }

            throw new RepositoryStorageMetadataInvalidException("mislocated-pom", message.toString());
        }

        ProjectVersionMetadata metadata = new ProjectVersionMetadata();
        metadata.setCiManagement(convertCiManagement(model.getCiManagement()));
        metadata.setDescription(model.getDescription());
        metadata.setId(readMetadataRequest.getProjectVersion());
        metadata.setIssueManagement(convertIssueManagement(model.getIssueManagement()));
        metadata.setLicenses(convertLicenses(model.getLicenses()));
        metadata.setMailingLists(convertMailingLists(model.getMailingLists()));
        metadata.setDependencies(convertDependencies(model.getDependencies()));
        metadata.setName(model.getName());
        metadata.setOrganization(convertOrganization(model.getOrganization()));
        metadata.setScm(convertScm(model.getScm()));
        metadata.setUrl(model.getUrl());
        metadata.setProperties(model.getProperties());

        MavenProjectFacet facet = new MavenProjectFacet();
        facet.setGroupId(model.getGroupId() != null ? model.getGroupId() : model.getParent().getGroupId());
        facet.setArtifactId(model.getArtifactId());
        facet.setPackaging(model.getPackaging());
        if (model.getParent() != null) {
            MavenProjectParent parent = new MavenProjectParent();
            parent.setGroupId(model.getParent().getGroupId());
            parent.setArtifactId(model.getParent().getArtifactId());
            parent.setVersion(model.getParent().getVersion());
            facet.setParent(parent);
        }
        metadata.addFacet(facet);

        return metadata;
    } catch (RepositoryAdminException e) {
        throw new RepositoryStorageRuntimeException("repo-admin", e.getMessage(), e);
    }
}

From source file:org.jboss.maven.extension.dependency.resolver.EffectiveModelBuilder.java

License:Apache License

/**
 * Build the effective model for the given pom file
 *
 * @param pomFile//from w  w  w  .j a v  a  2 s  .c  o m
 * @return effective pom model
 * @throws ModelBuildingException
 */
private Model buildModel(File pomFile, ModelResolver modelResolver) throws ModelBuildingException {
    ModelBuildingRequest request = new DefaultModelBuildingRequest();
    request.setPomFile(pomFile);
    request.setModelResolver(modelResolver);
    request.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0);
    request.setTwoPhaseBuilding(false); // Resolve the complete model in one step
    request.setSystemProperties(System.getProperties());
    ModelBuildingResult result = modelBuilder.build(request);
    return result.getEffectiveModel();
}