Guest User

Untitled

a guest
Feb 2nd, 2016
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.74 KB | None | 0 0
  1. package org.aroundthecode.pathfinder.crawler;
  2.  
  3. import java.io.IOException;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6.  
  7. import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
  8. import org.eclipse.aether.DefaultRepositorySystemSession;
  9. import org.eclipse.aether.RepositorySystem;
  10. import org.eclipse.aether.RepositorySystemSession;
  11. import org.eclipse.aether.artifact.Artifact;
  12. import org.eclipse.aether.artifact.DefaultArtifact;
  13. import org.eclipse.aether.collection.CollectRequest;
  14. import org.eclipse.aether.collection.CollectResult;
  15. import org.eclipse.aether.collection.DependencyCollectionException;
  16. import org.eclipse.aether.collection.DependencySelector;
  17. import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory;
  18. import org.eclipse.aether.graph.Dependency;
  19. import org.eclipse.aether.graph.DependencyFilter;
  20. import org.eclipse.aether.graph.DependencyNode;
  21. import org.eclipse.aether.graph.DependencyVisitor;
  22. import org.eclipse.aether.impl.DefaultServiceLocator;
  23. import org.eclipse.aether.repository.LocalRepository;
  24. import org.eclipse.aether.repository.RemoteRepository;
  25. import org.eclipse.aether.resolution.DependencyResolutionException;
  26. import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
  27. import org.eclipse.aether.spi.connector.transport.TransporterFactory;
  28. import org.eclipse.aether.transport.file.FileTransporterFactory;
  29. import org.eclipse.aether.transport.http.HttpTransporterFactory;
  30. import org.eclipse.aether.util.artifact.JavaScopes;
  31. import org.eclipse.aether.util.filter.DependencyFilterUtils;
  32. import org.eclipse.aether.util.graph.selector.AndDependencySelector;
  33. import org.eclipse.aether.util.graph.selector.ExclusionDependencySelector;
  34. import org.eclipse.aether.util.graph.selector.OptionalDependencySelector;
  35. import org.eclipse.aether.util.graph.selector.ScopeDependencySelector;
  36. import org.eclipse.aether.util.graph.visitor.FilteringDependencyVisitor;
  37. import org.eclipse.aether.util.graph.visitor.TreeDependencyVisitor;
  38.  
  39. public class CrawlerManager {
  40.  
  41.     LocalRepository localRepo = null;
  42.     RepositorySystem system = null;
  43.     RepositorySystemSession session = null;
  44.     List<RemoteRepository> repositories = new ArrayList<RemoteRepository>();
  45.  
  46.     public CrawlerManager(String localRepoPath) throws IOException {
  47.         localRepo = new LocalRepository( localRepoPath );
  48.         system = newRepositorySystem();
  49.         session = newSession(system);
  50.         repositories.add((new RemoteRepository.Builder("central", "default", "http://central.maven.org/maven2/")).build());
  51.     }
  52.  
  53.     private RepositorySystem newRepositorySystem()
  54.     {
  55.         DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator();
  56.         locator.addService( RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class );
  57.         locator.addService( TransporterFactory.class, FileTransporterFactory.class );
  58.         locator.addService( TransporterFactory.class, HttpTransporterFactory.class );
  59.         return locator.getService( RepositorySystem.class );
  60.     }
  61.  
  62.     private RepositorySystemSession newSession( RepositorySystem system )
  63.     {
  64.         DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
  65.         session.setLocalRepositoryManager( system.newLocalRepositoryManager( session, localRepo ) );
  66.  
  67.         DependencySelector depFilter = new AndDependencySelector(
  68.                 new ScopeDependencySelector("provided" ),
  69.                 new OptionalDependencySelector(),
  70.                 new ExclusionDependencySelector()
  71.                 );
  72.  
  73.         session.setDependencySelector(depFilter);
  74.         return session;
  75.     }
  76.  
  77.     public void getRecursiveDependencies(Artifact artifact) throws DependencyResolutionException, DependencyCollectionException{
  78.         {RepositorySystem system = newRepositorySystem();
  79.  
  80.         RepositorySystemSession session = newSession(system);
  81.  
  82.         artifact = new DefaultArtifact("org.aroundthecode.pathfinder:pathfinder-server:0.1.0-SNAPSHOT");
  83.  
  84.         DependencyFilter classpathFlter = DependencyFilterUtils.classpathFilter(JavaScopes.TEST);
  85.  
  86.         CollectRequest collectRequest = new CollectRequest();
  87.         collectRequest.setRoot(new Dependency(artifact, JavaScopes.COMPILE));
  88.         collectRequest.setRepositories(repositories);
  89.  
  90.         //use collectDependencies to collect
  91.         CollectResult collectResult = system.collectDependencies(session, collectRequest);
  92.         DependencyNode node = collectResult.getRoot();
  93.         node.accept(new TreeDependencyVisitor(new FilteringDependencyVisitor(new DependencyVisitor() {
  94.             String indent = "";
  95.             @Override
  96.             public boolean visitEnter(DependencyNode dependencyNode) {
  97.                 System.out.println(indent + dependencyNode.getArtifact());
  98.                 indent += "    ";
  99.                 return true;
  100.             }
  101.  
  102.             @Override
  103.             public boolean visitLeave(DependencyNode dependencyNode) {
  104.                 indent = indent.substring(0, indent.length() - 4);
  105.                 return true;
  106.             }
  107.         }, classpathFlter)));
  108.         }
  109.     }
  110.  
  111.  
  112. }
Advertisement
Add Comment
Please, Sign In to add comment