Example usage for org.apache.maven.project MavenProject getDependencyManagement

List of usage examples for org.apache.maven.project MavenProject getDependencyManagement

Introduction

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

Prototype

public DependencyManagement getDependencyManagement() 

Source Link

Usage

From source file:com.alibaba.citrus.maven.eclipse.base.ide.AbstractIdeSupportMojo.java

License:Apache License

/**
 * Resolve project dependencies. Manual resolution is needed in order to avoid resolution of multiproject artifacts
 * (if projects will be linked each other an installed jar is not needed) and to avoid a failure when a jar is
 * missing.//from www  .  j ava2 s. c  o m
 *
 * @return resolved IDE dependencies, with attached jars for non-reactor dependencies
 * @throws MojoExecutionException if dependencies can't be resolved
 */
protected IdeDependency[] doDependencyResolution() throws MojoExecutionException {
    if (ideDeps == null) {
        if (resolveDependencies) {
            MavenProject project = getProject();
            ArtifactRepository localRepo = getLocalRepository();

            List deps = getProject().getDependencies();

            // Collect the list of resolved IdeDependencies.
            List dependencies = new ArrayList();

            if (deps != null) {
                Map managedVersions = createManagedVersionMap(getArtifactFactory(), project.getId(),
                        project.getDependencyManagement());

                ArtifactResolutionResult artifactResolutionResult = null;

                try {

                    List listeners = new ArrayList();

                    if (logger.isDebugEnabled()) {
                        listeners.add(new DebugResolutionListener(logger));
                    }

                    listeners.add(new WarningResolutionListener(logger));

                    artifactResolutionResult = artifactCollector.collect(getProjectArtifacts(),
                            project.getArtifact(), managedVersions, localRepo,
                            project.getRemoteArtifactRepositories(), getArtifactMetadataSource(), null,
                            listeners);
                } catch (ArtifactResolutionException e) {
                    getLog().debug(e.getMessage(), e);
                    getLog().error(
                            Messages.getString("AbstractIdeSupportMojo.artifactresolution", new Object[] { //$NON-NLS-1$
                                    e.getGroupId(), e.getArtifactId(), e.getVersion(), e.getMessage() }));

                    // if we are here artifactResolutionResult is null, create a project without dependencies but
                    // don't fail
                    // (this could be a reactor projects, we don't want to fail everything)
                    // Causes MECLIPSE-185. Not sure if it should be handled this way??
                    return new IdeDependency[0];
                }

                // keep track of added reactor projects in order to avoid duplicates
                Set emittedReactorProjectId = new HashSet();

                for (Iterator i = artifactResolutionResult.getArtifactResolutionNodes().iterator(); i
                        .hasNext();) {

                    ResolutionNode node = (ResolutionNode) i.next();
                    int dependencyDepth = node.getDepth();
                    Artifact art = node.getArtifact();
                    // don't resolve jars for reactor projects
                    if (hasToResolveJar(art)) {
                        try {
                            artifactResolver.resolve(art, node.getRemoteRepositories(), localRepository);
                        } catch (ArtifactNotFoundException e) {
                            getLog().debug(e.getMessage(), e);
                            getLog().warn(Messages.getString("AbstractIdeSupportMojo.artifactdownload", //$NON-NLS-1$
                                    new Object[] { e.getGroupId(), e.getArtifactId(), e.getVersion(),
                                            e.getMessage() }));
                        } catch (ArtifactResolutionException e) {
                            getLog().debug(e.getMessage(), e);
                            getLog().warn(Messages.getString("AbstractIdeSupportMojo.artifactresolution",
                                    new Object[] { //$NON-NLS-1$
                                            e.getGroupId(), e.getArtifactId(), e.getVersion(),
                                            e.getMessage() }));
                        }
                    }

                    boolean includeArtifact = true;
                    if (getExcludes() != null) {
                        String artifactFullId = art.getGroupId() + ":" + art.getArtifactId();
                        if (getExcludes().contains(artifactFullId)) {
                            getLog().info("excluded: " + artifactFullId);
                            includeArtifact = false;
                        }
                    }

                    if (includeArtifact && (!(getUseProjectReferences() && isAvailableAsAReactorProject(art))
                            || emittedReactorProjectId.add(art.getGroupId() + '-' + art.getArtifactId()))) {

                        // the following doesn't work: art.getArtifactHandler().getPackaging() always returns "jar"
                        // also
                        // if the packaging specified in pom.xml is different.

                        // osgi-bundle packaging is provided by the felix osgi plugin
                        // eclipse-plugin packaging is provided by this eclipse plugin
                        // String packaging = art.getArtifactHandler().getPackaging();
                        // boolean isOsgiBundle = "osgi-bundle".equals( packaging ) || "eclipse-plugin".equals(
                        // packaging );

                        // we need to check the manifest, if "Bundle-SymbolicName" is there the artifact can be
                        // considered
                        // an osgi bundle
                        boolean isOsgiBundle = false;
                        String osgiSymbolicName = null;
                        if (art.getFile() != null) {
                            JarFile jarFile = null;
                            try {
                                jarFile = new JarFile(art.getFile(), false, ZipFile.OPEN_READ);

                                Manifest manifest = jarFile.getManifest();
                                if (manifest != null) {
                                    osgiSymbolicName = manifest.getMainAttributes()
                                            .getValue(new Attributes.Name("Bundle-SymbolicName"));
                                }
                            } catch (IOException e) {
                                getLog().info("Unable to read jar manifest from " + art.getFile());
                            } finally {
                                if (jarFile != null) {
                                    try {
                                        jarFile.close();
                                    } catch (IOException e) {
                                        // ignore
                                    }
                                }
                            }
                        }

                        isOsgiBundle = osgiSymbolicName != null;

                        IdeDependency dep = new IdeDependency(art.getGroupId(), art.getArtifactId(),
                                art.getVersion(), art.getClassifier(), useProjectReference(art),
                                Artifact.SCOPE_TEST.equals(art.getScope()),
                                Artifact.SCOPE_SYSTEM.equals(art.getScope()),
                                Artifact.SCOPE_PROVIDED.equals(art.getScope()),
                                art.getArtifactHandler().isAddedToClasspath(), art.getFile(), art.getType(),
                                isOsgiBundle, osgiSymbolicName, dependencyDepth, getProjectNameForArifact(art));
                        // no duplicate entries allowed. System paths can cause this problem.
                        if (!dependencies.contains(dep)) {
                            dependencies.add(dep);
                        }
                    }
                }

                // @todo a final report with the list of
                // missingArtifacts?

            }

            ideDeps = (IdeDependency[]) dependencies.toArray(new IdeDependency[dependencies.size()]);
        } else {
            ideDeps = new IdeDependency[0];
        }
    }

    return ideDeps;
}

From source file:com.github.ferstl.maven.pomenforcers.PedanticDependencyManagementOrderEnforcer.java

License:Apache License

@Override
protected Collection<Dependency> getMavenDependencies(MavenProject project) {
    DependencyManagement dependencyManagement = project.getDependencyManagement();
    if (dependencyManagement != null) {
        return dependencyManagement.getDependencies();
    } else {//from  w  ww  .  j a va  2 s. c o m
        return Collections.emptyList();
    }
}

From source file:com.oracle.istack.maven.PropertyResolver.java

License:Open Source License

/**
 *
 * @param project maven project/*from ww  w.  j av  a2  s.c o m*/
 * @throws FileNotFoundException properties not found
 * @throws IOException IO error
 * @throws XmlPullParserException error parsing xml
 */
public void resolveProperties(MavenProject project)
        throws FileNotFoundException, IOException, XmlPullParserException {
    logger.info("Resolving properties for " + project.getGroupId() + ":" + project.getArtifactId());

    Model model = null;
    FileReader reader;
    try {
        reader = new FileReader(project.getFile());
        model = mavenreader.read(reader);
    } catch (FileNotFoundException ex) {
        Logger.getLogger(ImportPropertiesMojo.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(ImportPropertiesMojo.class.getName()).log(Level.SEVERE, null, ex);
    }
    MavenProject loadedProject = new MavenProject(model);

    DependencyManagement dm = loadedProject.getDependencyManagement();
    if (dm == null) {
        logger.warn("No dependency management section found in: " + loadedProject.getGroupId() + ":"
                + loadedProject.getArtifactId());
        return;
    }

    List<Dependency> depList = dm.getDependencies();

    DependencyResult result;
    for (Dependency d : depList) {
        if ("import".equals(d.getScope())) {
            try {
                String version = d.getVersion();
                logger.info("Imported via import-scope: " + d.getGroupId() + ":" + d.getArtifactId() + ":"
                        + version);
                if (version.contains("$")) {
                    version = properties
                            .getProperty(version.substring(version.indexOf('{') + 1, version.lastIndexOf('}')));
                    logger.info("Imported version resolved to: " + version);
                }
                d.setVersion(version);
                d.setType("pom");
                d.setClassifier("pom");
                result = DependencyResolver.resolve(d, pluginRepos, repoSystem, repoSession);
                Artifact a = result.getArtifactResults().get(0).getArtifact();
                reader = new FileReader(a.getFile());
                Model m = mavenreader.read(reader);
                MavenProject p = new MavenProject(m);
                p.setFile(a.getFile());
                for (Map.Entry<Object, Object> e : p.getProperties().entrySet()) {
                    logger.info("Setting property: " + (String) e.getKey() + ":" + (String) e.getValue());
                    properties.setProperty((String) e.getKey(), (String) e.getValue());
                }

                resolveProperties(p);
            } catch (DependencyResolutionException ex) {
                Logger.getLogger(ImportPropertiesMojo.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
}

From source file:com.redhat.rcm.version.mgr.session.ManagedInfo.java

License:Open Source License

void addBOM(final File bom, final MavenProject project) throws VManException {
    final FullProjectKey key = new FullProjectKey(project.getGroupId(), project.getArtifactId(),
            project.getVersion());/*from  w ww  . j a  v a 2  s . co  m*/
    if (bomProjects.containsKey(key)) {
        return;
    }

    bomProjects.put(key, project);

    startBomMap(bom, project.getGroupId(), project.getArtifactId(), project.getVersion());

    if (project.getDependencyManagement() != null
            && project.getDependencyManagement().getDependencies() != null) {
        for (final Dependency dep : project.getDependencyManagement().getDependencies()) {
            mapDependency(bom, dep);
        }
    }

    final Properties properties = project.getProperties();
    if (properties != null) {
        final String relocations = properties.getProperty(RELOCATIONS_KEY);
        logger.info("Got relocations:\n\n" + relocations);
        if (relocations != null) {
            logger.warn("[DEPRECATED] BOM-based coordinate relocations have been replaced by the "
                    + Cli.RELOCATIONS_PROPERTY
                    + " configuration, which specifies a URL to a properties file. Please use this instead.");

            relocatedCoords.addBomRelocations(bom, parseProperties(relocations));
        }

        final String mappings = properties.getProperty(MAPPINGS_KEY);
        logger.info("Got mappings:\n\n" + mappings);
        if (mappings != null) {
            logger.warn("[DEPRECATED] BOM-based property mappings have been replaced by the "
                    + Cli.PROPERTY_MAPPINGS_PROPERTY
                    + " configuration, which specifies a URL to a properties file. Please use this instead.");

            propertyMappings.addBomPropertyMappings(bom, project.getProperties(), parseProperties(mappings));
        }
    }

    logger.info("Updating property mappings from " + project.getId());

    // NOTE: parent properties are inherited into the BOM by the time the MavenProject instance
    // is created, so we don't need to traverse up to the parent; we should have everything here.
    propertyMappings.updateProjectMap(project.getProperties());
}

From source file:com.synedge.enforcer.EnforceImportRelease.java

License:Apache License

public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {
    Log log = helper.getLog();//from   www  .j  a v a2s  . com
    log.info("Entering enforcer");
    try {
        // get the various expressions out of the helper.
        MavenProject project = (MavenProject) helper.evaluate("${project}");
        if (project == null) {
            throw new EnforcerRuleException("There is no project");
        }
        if (onlyWhenRelease && project.getArtifact().isSnapshot()) {
            log.warn("Project is SNAPSHOT, not validating");
            return;
        }
        if (project.getDependencyManagement() == null) {
            log.info("No dependency management found. All ok");
            return;
        }
        if (project.getDependencyManagement().getDependencies() == null) {
            log.info("No dependency management dependencies found. All ok");
            return;
        }

        helper.getLog().debug("Getting POM, parse and check it");
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        //Using factory get an instance of document builder
        DocumentBuilder db = dbf.newDocumentBuilder();

        //parse using builder to get DOM representation of the XML file
        Document doc = db.parse(project.getFile().getAbsolutePath());
        XPathFactory xPathfactory = XPathFactory.newInstance();
        XPath xpath = xPathfactory.newXPath();
        XPathExpression expr = xpath.compile(
                "/*[local-name()='project']/*[local-name()='dependencyManagement']/*[local-name()='dependencies']/*[local-name()='dependency']/*[local-name()='scope' and text()='import']/../*[local-name()='version']");
        NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
        for (int i = 0; i < nl.getLength(); i++) {
            Node version = nl.item(i);
            if (version.getTextContent().contains("-SNAPSHOT")) {
                throw new EnforcerRuleException("Found an artifact in the import scope containing SNAPSHOT!");
            }
        }
        helper.getLog().debug("Checked them all");
    } catch (ExpressionEvaluationException e) {
        throw new EnforcerRuleException("Unable to lookup an expression " + e.getLocalizedMessage(), e);
    } catch (ParserConfigurationException e) {
        throw new EnforcerRuleException("Unable to parse POM", e);
    } catch (SAXException e) {
        throw new EnforcerRuleException("Unable to parse POM", e);
    } catch (IOException e) {
        throw new EnforcerRuleException("Unable to parse POM", e);
    } catch (XPathExpressionException e) {
        throw new EnforcerRuleException("Internal error in XPath parser", e);
    }
}

From source file:com.timboudreau.maven.dependency.graph.fork.GraphConstructor.java

License:Open Source License

private static int obtainManagedState(Artifact artifact, DependencyGraphScene scene) {
    MavenProject proj = scene.getMavenProject();
    if (proj == null) {
        return ArtifactGraphNode.UNMANAGED;
    }/*ww w .  jav a  2 s  . c  o  m*/

    DependencyManagement dm = proj.getDependencyManagement();
    if (dm == null) {
        return ArtifactGraphNode.UNMANAGED;
    }

    @SuppressWarnings("unchecked")
    List<Dependency> deps = dm.getDependencies();
    if (deps == null) {
        return ArtifactGraphNode.UNMANAGED;
    }

    String id = artifact.getArtifactId();
    String groupId = artifact.getGroupId();
    String version = artifact.getVersion();

    for (Dependency dep : deps) {
        if (id.equals(dep.getArtifactId()) && groupId.equals(dep.getGroupId())) {
            if (!version.equals(dep.getVersion())) {
                return ArtifactGraphNode.OVERRIDES_MANAGED;
            } else {
                return ArtifactGraphNode.MANAGED;
            }
        }
    }

    return ArtifactGraphNode.UNMANAGED;
}

From source file:de.adorsys.cmer.InheritedDependencyScopeOverridden.java

License:Apache License

public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {
    Log log = helper.getLog();// w  w  w .j a va  2 s.  c  om

    try {
        // get the various expressions out of the helper.
        MavenProject project = (MavenProject) helper.evaluate("${project}");

        StringBuilder overriddenDeps = new StringBuilder();
        StringBuilder pseudoOverriddenDeps = new StringBuilder();

        List<MyDependency> inheritedDependencies = getComparableList(
                project.getDependencyManagement().getDependencies());
        List<MyDependency> declaredDependencies = getComparableList(
                project.getOriginalModel().getDependencies());

        for (MyDependency dependency : declaredDependencies) {
            if (null != dependency.getScope()) {
                Dependency effectiveDependency = inheritedDependencies
                        .get(inheritedDependencies.indexOf(dependency)).getRawDependency();
                String output = effectiveDependency.getManagementKey() + ": " + effectiveDependency.getScope()
                        + " --> " + dependency.getScope() + "\n";

                if (effectiveDependency.getScope() != null
                        ? effectiveDependency.getScope().equals(dependency.getScope())
                        : dependency.getScope() == null) {
                    pseudoOverriddenDeps.append(output);
                } else {
                    overriddenDeps.append(output);
                }
            }
        }

        if (overriddenDeps.length() != 0 | pseudoOverriddenDeps.length() != 0) {
            String warningString = "This depenencies override the inherited scope:\n"
                    + "------------------------------------------------------\n";
            if (pseudoOverriddenDeps.length() != 0) {
                throw new EnforcerRuleException(warningString + overriddenDeps
                        + "\nThis depenencies override the inherited scope with the already defined scope value.\n"
                        + "This dependencies should be corrected:\n"
                        + "---------------------------------------------\n" + pseudoOverriddenDeps + "\n");
            }
            log.warn(warningString + overriddenDeps.toString());
        }
    } catch (ExpressionEvaluationException e) {
        throw new EnforcerRuleException("Unable to lookup an expression " + e.getLocalizedMessage(), e);
    }
}

From source file:io.airlift.resolver.ArtifactResolver.java

License:Apache License

public List<Artifact> resolvePom(File pomFile) {
    if (pomFile == null) {
        throw new RuntimeException("pomFile is null");
    }/* w  w  w  . j  av  a  2s.com*/

    MavenProject pom;
    try {
        PlexusContainer container = container();
        org.apache.maven.repository.RepositorySystem lrs = container
                .lookup(org.apache.maven.repository.RepositorySystem.class);
        ProjectBuilder projectBuilder = container.lookup(ProjectBuilder.class);
        ProjectBuildingRequest request = new DefaultProjectBuildingRequest();
        request.setSystemProperties(requiredSystemProperties());
        request.setRepositorySession(repositorySystemSession);
        request.setProcessPlugins(false);
        request.setLocalRepository(lrs.createDefaultLocalRepository());
        request.setRemoteRepositories(
                Arrays.asList(new ArtifactRepository[] { lrs.createDefaultRemoteRepository() }.clone()));
        ProjectBuildingResult result = projectBuilder.build(pomFile, request);
        pom = result.getProject();
    } catch (Exception e) {
        if (e instanceof RuntimeException) {
            throw (RuntimeException) e;
        }
        throw new RuntimeException("Error loading pom: " + pomFile.getAbsolutePath(), e);
    }

    Artifact rootArtifact = new DefaultArtifact(pom.getArtifact().getGroupId(),
            pom.getArtifact().getArtifactId(), pom.getArtifact().getClassifier(), pom.getArtifact().getType(),
            pom.getArtifact().getVersion(), null, new File(pom.getModel().getBuild().getOutputDirectory()));

    CollectRequest collectRequest = new CollectRequest();
    for (org.apache.maven.model.Dependency dependency : pom.getDependencies()) {
        collectRequest.addDependency(toAetherDependency(dependency));
    }
    for (RemoteRepository repository : pom.getRemoteProjectRepositories()) {
        collectRequest.addRepository(repository);
    }
    for (RemoteRepository repository : repositories) {
        collectRequest.addRepository(repository);
    }

    // Make sure we account for managed dependencies
    if (pom.getDependencyManagement() != null) {
        for (org.apache.maven.model.Dependency managedDependency : pom.getDependencyManagement()
                .getDependencies()) {
            collectRequest.addManagedDependency(toAetherDependency(managedDependency));
        }
    }

    DependencyRequest dependencyRequest = new DependencyRequest(collectRequest,
            DependencyFilterUtils.classpathFilter(JavaScopes.RUNTIME));
    List<Artifact> artifacts = resolveArtifacts(dependencyRequest);
    return ImmutableList.<Artifact>builder().add(rootArtifact).addAll(artifacts).build();
}

From source file:io.sundr.maven.GenerateBomMojo.java

License:Apache License

private void verifyBomDependencies(BomConfig config, MavenProject project) throws MojoFailureException {
    if (!config.isCheckMismatches()) {
        return;/* w ww. j  a va 2 s .c  om*/
    }

    Map<String, Set<String>> versions = new TreeMap<String, Set<String>>();
    Set<String> mismatches = new TreeSet<String>();
    if (project.getDependencyManagement() != null
            && project.getDependencyManagement().getDependencies() != null) {
        for (Dependency dependency : project.getDependencyManagement().getDependencies()) {
            String key = dependencyKey(dependency);
            String version = dependency.getVersion();
            if (!versions.containsKey(key)) {
                versions.put(key, new TreeSet<String>());
            }
            for (String otherVersion : versions.get(key)) {
                if (!version.equals(otherVersion)) {
                    mismatches.add(key);
                    break;
                }
            }
            versions.get(key).add(version);
        }
    }

    if (mismatches.size() > 0) {
        StringBuilder message = new StringBuilder();
        message.append("The BOM " + config.getArtifactId()
                + " contains multiple versions of the following dependencies:\n");
        for (String key : mismatches) {
            message.append(" - " + key + " versions " + versions.get(key) + "\n");
        }

        if (config.isFailOnMismatch()) {
            throw new MojoFailureException(message.toString());
        } else {
            getLog().warn(message.toString());
        }
    }
}

From source file:io.sundr.maven.GenerateBomMojo.java

License:Apache License

/**
 * Returns the model of the {@link org.apache.maven.project.MavenProject} to generate.
 * This is a trimmed down version and contains just the stuff that need to go into the bom.
 *
 * @param project The source {@link org.apache.maven.project.MavenProject}.
 * @param config  The {@link io.sundr.maven.BomConfig}.
 * @return The build {@link org.apache.maven.project.MavenProject}.
 *//*from   w  w w  .  j  ava  2s.  c  o  m*/
private static MavenProject toGenerate(MavenProject project, BomConfig config,
        Collection<Dependency> dependencies, Set<Artifact> plugins) {
    MavenProject toGenerate = project.clone();
    toGenerate.setGroupId(project.getGroupId());
    toGenerate.setArtifactId(config.getArtifactId());
    toGenerate.setVersion(project.getVersion());
    toGenerate.setPackaging("pom");
    toGenerate.setName(config.getName());
    toGenerate.setDescription(config.getDescription());

    toGenerate.setUrl(project.getUrl());
    toGenerate.setLicenses(project.getLicenses());
    toGenerate.setScm(project.getScm());
    toGenerate.setDevelopers(project.getDevelopers());

    toGenerate.getModel().setDependencyManagement(new DependencyManagement());
    for (Dependency dependency : dependencies) {
        toGenerate.getDependencyManagement().addDependency(dependency);
    }

    toGenerate.getModel().setBuild(new Build());
    if (!plugins.isEmpty()) {
        toGenerate.getModel().setBuild(new Build());
        toGenerate.getModel().getBuild().setPluginManagement(new PluginManagement());
        for (Artifact artifact : plugins) {
            toGenerate.getPluginManagement().addPlugin(toPlugin(artifact));
        }
    }

    return toGenerate;
}