You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by dj...@apache.org on 2011/05/12 01:09:28 UTC
svn commit: r1102132 - in
/karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features:
DependencyHelper.java GenerateFeaturesXmlMojo2.java
Author: djencks
Date: Wed May 11 23:09:27 2011
New Revision: 1102132
URL: http://svn.apache.org/viewvc?rev=1102132&view=rev
Log:
KARAF-424 add option to include top level provided scope dependencies in dependency scan results
Modified:
karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/DependencyHelper.java
karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateFeaturesXmlMojo2.java
Modified: karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/DependencyHelper.java
URL: http://svn.apache.org/viewvc/karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/DependencyHelper.java?rev=1102132&r1=1102131&r2=1102132&view=diff
==============================================================================
--- karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/DependencyHelper.java (original)
+++ karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/DependencyHelper.java Wed May 11 23:09:27 2011
@@ -20,7 +20,6 @@
package org.apache.karaf.tooling.features;
-import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
@@ -29,20 +28,23 @@ import java.util.Set;
import org.apache.maven.RepositoryUtils;
import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.plugin.logging.SystemStreamLog;
import org.apache.maven.project.MavenProject;
import org.sonatype.aether.RepositorySystem;
import org.sonatype.aether.RepositorySystemSession;
import org.sonatype.aether.artifact.Artifact;
import org.sonatype.aether.collection.CollectRequest;
import org.sonatype.aether.collection.CollectResult;
+import org.sonatype.aether.collection.DependencyCollectionContext;
import org.sonatype.aether.collection.DependencyCollectionException;
import org.sonatype.aether.collection.DependencyGraphTransformer;
+import org.sonatype.aether.collection.DependencySelector;
import org.sonatype.aether.graph.Dependency;
import org.sonatype.aether.graph.DependencyNode;
import org.sonatype.aether.repository.RemoteRepository;
import org.sonatype.aether.util.DefaultRepositorySystemSession;
+import org.sonatype.aether.util.graph.selector.AndDependencySelector;
+import org.sonatype.aether.util.graph.selector.OptionalDependencySelector;
+import org.sonatype.aether.util.graph.selector.ScopeDependencySelector;
import org.sonatype.aether.util.graph.transformer.ChainedDependencyGraphTransformer;
import org.sonatype.aether.util.graph.transformer.ConflictMarker;
import org.sonatype.aether.util.graph.transformer.JavaDependencyContextRefiner;
@@ -90,6 +92,8 @@ public class DependencyHelper {
*/
private final List<RemoteRepository> pluginRepos;
+ private boolean includeTopLevelProvidedScopeDependencies;
+
//dependencies we are interested in
protected Map<Artifact, String> localDependencies;
//log of what happened during search
@@ -97,11 +101,12 @@ public class DependencyHelper {
- public DependencyHelper(List<RemoteRepository> pluginRepos, List<RemoteRepository> projectRepos, RepositorySystemSession repoSession, RepositorySystem repoSystem) {
+ public DependencyHelper(List<RemoteRepository> pluginRepos, List<RemoteRepository> projectRepos, RepositorySystemSession repoSession, RepositorySystem repoSystem, boolean includeTopLevelProvidedScopeDependencies) {
this.pluginRepos = pluginRepos;
this.projectRepos = projectRepos;
this.repoSession = repoSession;
this.repoSystem = repoSystem;
+ this.includeTopLevelProvidedScopeDependencies = includeTopLevelProvidedScopeDependencies;
}
public Map<Artifact, String> getLocalDependencies() {
@@ -126,9 +131,12 @@ public class DependencyHelper {
private DependencyNode getDependencyTree(Artifact artifact) throws MojoExecutionException {
try {
- List<org.sonatype.aether.graph.Dependency> managedArtifacts = new ArrayList<Dependency>();
- CollectRequest collectRequest = new CollectRequest(new org.sonatype.aether.graph.Dependency(artifact, "compile"), null, projectRepos);
+ CollectRequest collectRequest = new CollectRequest(new Dependency(artifact, "compile"), null, projectRepos);
DefaultRepositorySystemSession session = new DefaultRepositorySystemSession(repoSession);
+ if (includeTopLevelProvidedScopeDependencies) {
+ session.setDependencySelector(new AndDependencySelector(new OptionalDependencySelector(),
+ new ScopeDependencySelectorProvider()));
+ }
DependencyGraphTransformer transformer = new ChainedDependencyGraphTransformer(new ConflictMarker(),
new JavaEffectiveScopeCalculator(),
new JavaDependencyContextRefiner());
@@ -140,7 +148,18 @@ public class DependencyHelper {
}
}
+ private static class ScopeDependencySelectorProvider implements DependencySelector {
+
+ private DependencySelector child = new ScopeDependencySelector("test", "provided");
+
+ public boolean selectDependency(Dependency dependency) {
+ throw new IllegalStateException("this does not appear to be called");
+ }
+ public DependencySelector deriveChildSelector(DependencyCollectionContext context) {
+ return child;
+ }
+ }
private static class Scanner {
private static enum Accept {
@@ -185,8 +204,7 @@ public class DependencyHelper {
// Artifact artifact = getArtifact(rootNode);
Accept accept = accept(dependencyNode, parentAccept);
- if (accept.isContinue()) {
- List<DependencyNode> children = dependencyNode.getChildren();
+ if (accept.isLocal()) {
if (isFromFeature) {
if (!isFeature(dependencyNode)) {
log.append(indent).append("from feature:").append(dependencyNode).append("\n");
@@ -206,8 +224,11 @@ public class DependencyHelper {
isFromFeature = true;
}
}
- for (DependencyNode child : children) {
- scan(child, accept, useTransitiveDependencies, isFromFeature, indent + " ");
+ if (accept.isContinue()) {
+ List<DependencyNode> children = dependencyNode.getChildren();
+ for (DependencyNode child : children) {
+ scan(child, accept, useTransitiveDependencies, isFromFeature, indent + " ");
+ }
}
}
}
@@ -222,6 +243,9 @@ public class DependencyHelper {
if (scope == null || "runtime".equalsIgnoreCase(scope) || "compile".equalsIgnoreCase(scope)) {
return previous;
}
+ if ("provided".equalsIgnoreCase(scope)) {
+ return Accept.PROVIDED;
+ }
return Accept.STOP;
}
Modified: karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateFeaturesXmlMojo2.java
URL: http://svn.apache.org/viewvc/karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateFeaturesXmlMojo2.java?rev=1102132&r1=1102131&r2=1102132&view=diff
==============================================================================
--- karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateFeaturesXmlMojo2.java (original)
+++ karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateFeaturesXmlMojo2.java Wed May 11 23:09:27 2011
@@ -209,7 +209,7 @@ public class GenerateFeaturesXmlMojo2 ex
public void execute() throws MojoExecutionException, MojoFailureException {
try {
- DependencyHelper dependencyHelper = new DependencyHelper(pluginRepos, projectRepos, repoSession, repoSystem);
+ DependencyHelper dependencyHelper = new DependencyHelper(pluginRepos, projectRepos, repoSession, repoSystem, false);
dependencyHelper.getDependencies(project, true);
this.localDependencies = dependencyHelper.getLocalDependencies();
this.treeListing = dependencyHelper.getTreeListing();