List of usage examples for org.apache.maven.project MavenProject getDependencyManagement
public DependencyManagement getDependencyManagement()
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; }