Example usage for org.apache.maven.model.building ModelBuildingResult getEffectiveModel

List of usage examples for org.apache.maven.model.building ModelBuildingResult getEffectiveModel

Introduction

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

Prototype

Model getEffectiveModel();

Source Link

Document

Gets the assembled model.

Usage

From source file:com.google.devtools.build.workspace.maven.DefaultModelResolver.java

License:Open Source License

public Model getEffectiveModel(ModelSource modelSource, EventHandler handler) {
    DefaultModelBuildingRequest request = new DefaultModelBuildingRequest();
    request.setModelResolver(this);
    request.setModelSource(modelSource);
    Model model;/*from   ww w  . j a  v a2s.  c om*/
    try {
        ModelBuildingResult result = modelBuilder.build(request);
        model = result.getEffectiveModel();
    } catch (ModelBuildingException | IllegalArgumentException e) {
        // IllegalArg can be thrown if the parent POM cannot be resolved.
        handler.handle(Event.error(
                "Unable to resolve Maven model from " + modelSource.getLocation() + ": " + e.getMessage()));
        return null;
    }
    return model;
}

From source file:com.isomorphic.maven.mojo.AbstractPackagerMojo.java

License:Apache License

/**
 * Read the given POM so it can be used as the source of coordinates, etc. during artifact construction.  Note that
 * if this object's {@link #snapshots} property is true, and we're working with a development build ({@link #buildNumber} 
 * ends with 'd'), the POM is modified to remove the SNAPSHOT qualifier.
 * //from  w  ww .jav  a2s.co m
 * @param pom the POM file containing the artifact metadata
 * @return A Maven model to be used at {@link com.isomorphic.maven.packaging.Module#Module(Model)} Module construction
 * @throws ModelBuildingException if the Model cannot be built from the given POM
 * @throws IOException if the Model cannot be built from the given POM
 */
private Model getModelFromFile(File pom) throws ModelBuildingException, IOException {

    if (buildNumber.endsWith("d") && !snapshots) {
        LOGGER.info("Rewriting file to remove SNAPSHOT qualifier from development POM '{}'", pom.getName());
        String content = FileUtils.readFileToString(pom);
        content = content.replaceAll("-SNAPSHOT", "");
        FileUtils.write(pom, content);
    }

    ModelBuildingRequest request = new DefaultModelBuildingRequest();
    request.setPomFile(pom);

    ModelBuildingResult result = modelBuilder.build(request);
    return result.getEffectiveModel();
}

From source file:com.netflix.nebula.lint.rule.dependency.provider.MavenBomRecommendationProvider.java

License:Apache License

private Map<String, String> getMavenRecommendations()
        throws UnresolvableModelException, FileNotFoundException, ModelBuildingException {
    Map<String, String> recommendations = new HashMap<>();

    Set<File> recommendationFiles = getBomsOnConfiguration();
    for (File recommendation : recommendationFiles) {
        if (!recommendation.getName().endsWith("pom")) {
            break;
        }/*from   w  w  w.  ja v  a2s  .  c o m*/

        DefaultModelBuildingRequest request = new DefaultModelBuildingRequest();

        request.setModelResolver(new ModelResolver() {
            @Override
            public ModelSource2 resolveModel(String groupId, String artifactId, String version)
                    throws UnresolvableModelException {
                String notation = groupId + ":" + artifactId + ":" + version + "@pom";
                org.gradle.api.artifacts.Dependency dependency = project.getDependencies().create(notation);
                org.gradle.api.artifacts.Configuration configuration = project.getConfigurations()
                        .detachedConfiguration(dependency);
                try {
                    File file = configuration.getFiles().iterator().next();
                    return new SimpleModelSource(new java.io.FileInputStream(file));
                } catch (Exception e) {
                    throw new UnresolvableModelException(e, groupId, artifactId, version);
                }
            }

            @Override
            public ModelSource2 resolveModel(Dependency dependency) throws UnresolvableModelException {
                return resolveModel(dependency.getGroupId(), dependency.getArtifactId(),
                        dependency.getVersion());
            }

            @Override
            public ModelSource2 resolveModel(Parent parent) throws UnresolvableModelException {
                return resolveModel(parent.getGroupId(), parent.getArtifactId(), parent.getVersion());
            }

            @Override
            public void addRepository(Repository repository) throws InvalidRepositoryException {
                // do nothing
            }

            @Override
            public void addRepository(Repository repository, boolean bool) throws InvalidRepositoryException {
                // do nothing
            }

            @Override
            public ModelResolver newCopy() {
                return this; // do nothing
            }
        });
        request.setModelSource(new SimpleModelSource(new java.io.FileInputStream(recommendation)));
        request.setSystemProperties(System.getProperties());

        DefaultModelBuilder modelBuilder = new DefaultModelBuilderFactory().newInstance();
        modelBuilder.setModelInterpolator(new ProjectPropertiesModelInterpolator(project));

        ModelBuildingResult result = modelBuilder.build(request);
        log.info("using bom: " + result.getEffectiveModel().getId());
        Model model = result.getEffectiveModel();
        if (model == null) {
            break;
        }
        org.apache.maven.model.DependencyManagement dependencyManagement = model.getDependencyManagement();
        if (dependencyManagement == null) {
            break;
        }
        for (Dependency d : dependencyManagement.getDependencies()) {
            recommendations.put(d.getGroupId() + ":" + d.getArtifactId(), d.getVersion()); // overwrites previous values
        }
    }
    return recommendations;
}

From source file:com.redhat.rcm.version.model.Project.java

License:Open Source License

public Project(final Model raw, final ModelBuildingResult mbResult, final File pom)
        throws ProjectToolsException {
    this.pom = pom;

    this.originalModel = cloneModel(raw);
    this.model = raw;
    this.effectiveModel = mbResult.getEffectiveModel();
    this.key = new FullProjectKey(raw);
}

From source file:com.redhat.repository.validator.impl.bestpractices.BestPracticesValidator.java

@Override
public void validate(ValidatorContext ctx) {
    Iterator<ModelBuildingResult> modelIterator = validatorSupport.modelIterator(ctx, fileFilter);
    while (modelIterator.hasNext()) {
        ModelBuildingResult modelResult = modelIterator.next();
        if (modelResult != null) {
            Model rawModel = modelResult.getRawModel();
            Model effectiveModel = modelResult.getEffectiveModel();
            if (rawModel != null && effectiveModel != null) {
                logger.trace("validating {}", relativize(ctx, rawModel.getPomFile()));
                validateBestPractices(ctx, rawModel, effectiveModel);
            }/*from  w  w  w .  j a  v a  2  s .co  m*/
        }
    }
}

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. java  2 s .  c o m*/
    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.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);
    }//  w  w w. j av  a2  s.  c  o  m
    final ModelBuildingResult modelResult = modelBuilder.build(request);
    return modelResult.getEffectiveModel();
}

From source file:org.codehaus.mojo.flatten.FlattenMojo.java

License:Apache License

/**
 * Creates the effective POM for the given <code>pomFile</code> trying its best to match the core maven behaviour.
 *
 * @return the parsed and calculated effective POM.
 * @throws MojoExecutionException if anything goes wrong.
 *///from  w ww . j  a  va2 s. c o  m
protected static Model createEffectivePom(ModelBuildingRequest buildingRequest,
        final boolean embedBuildProfileDependencies) throws MojoExecutionException {
    ModelBuildingResult buildingResult;
    try {
        ProfileInjector profileInjector = new ProfileInjector() {

            public void injectProfile(Model model, Profile profile, ModelBuildingRequest request,
                    ModelProblemCollector problems) {

                // do nothing
            }
        };
        ProfileSelector profileSelector = new ProfileSelector() {

            public List<Profile> getActiveProfiles(Collection<Profile> profiles,
                    ProfileActivationContext context, ModelProblemCollector problems) {

                List<Profile> activeProfiles = new ArrayList<Profile>(profiles.size());

                for (Profile profile : profiles) {
                    Activation activation = profile.getActivation();
                    if (!embedBuildProfileDependencies || isBuildTimeDriven(activation)) {
                        activeProfiles.add(profile);
                    }
                }

                return activeProfiles;
            }
        };
        DefaultModelBuilder defaultModelBuilder = new DefaultModelBuilderFactory().newInstance();
        defaultModelBuilder.setProfileInjector(profileInjector).setProfileSelector(profileSelector);
        buildingResult = defaultModelBuilder.build(buildingRequest);
    } catch (ModelBuildingException e) {
        throw new MojoExecutionException(e.getMessage(), e);
    }

    Model effectivePom = buildingResult.getEffectiveModel();

    // LoggingModelProblemCollector problems = new LoggingModelProblemCollector( getLog() );
    // Model interpolatedModel =
    // this.modelInterpolator.interpolateModel( this.project.getOriginalModel(),
    // effectivePom.getProjectDirectory(), buildingRequest, problems );

    // remove Repositories from super POM (central)
    effectivePom.setRepositories(createFlattenedRepositories(effectivePom.getRepositories()));
    return effectivePom;
}

From source file:org.dthume.maven.xpom.impl.DefaultArtifactResolver.java

License:Apache License

private Source resolveEffectivePOMInternal(final String coords) {
    final File pom = resolveArtifactInternal(coords).getArtifact().getFile();
    final ModelBuildingRequest request = new DefaultModelBuildingRequest()
            .setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL)
            .setModelResolver(getModelResolver()).setPomFile(pom);

    final ModelBuildingResult result = buildModel(request);

    try {//from  w w w  .  j  a  va 2 s .  c om
        return XPOMUtil.modelToSource(result.getEffectiveModel());
    } catch (final IOException e) {
        throw ARE("Failed to serialize model", e);
    }
}

From source file:org.eclipse.ebr.maven.ModelUtil.java

License:Open Source License

public Model buildEffectiveModel(final File pomFile) throws MojoExecutionException {
    getLog().debug(format("Building effective model for pom '%s'.", pomFile));

    final DefaultModelBuildingRequest request = new DefaultModelBuildingRequest();
    request.setModelResolver(getModelResolver());
    request.setPomFile(pomFile);/*from  w  w w. ja  v  a2 s . c om*/
    request.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL);
    request.setProcessPlugins(false);
    request.setTwoPhaseBuilding(false);
    request.setUserProperties(getMavenSession().getUserProperties());
    request.setSystemProperties(getMavenSession().getSystemProperties());
    if (getLog().isDebugEnabled()) {
        getLog().debug("Request: " + request);
    }

    ModelBuildingResult result;
    try {
        result = modelBuilder.build(request);
    } catch (final ModelBuildingException e) {
        getLog().debug(e);
        throw new MojoExecutionException(
                format("Unable to build model for pom '%s'. %s", pomFile, e.getMessage()));
    }

    if (getLog().isDebugEnabled()) {
        getLog().debug("Result: " + result);
    }

    return result.getEffectiveModel();
}