Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.aroundthecode.pathfinder.crawler;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
- import org.eclipse.aether.DefaultRepositorySystemSession;
- import org.eclipse.aether.RepositorySystem;
- import org.eclipse.aether.RepositorySystemSession;
- import org.eclipse.aether.artifact.Artifact;
- import org.eclipse.aether.artifact.DefaultArtifact;
- import org.eclipse.aether.collection.CollectRequest;
- import org.eclipse.aether.collection.CollectResult;
- import org.eclipse.aether.collection.DependencyCollectionException;
- import org.eclipse.aether.collection.DependencySelector;
- import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory;
- import org.eclipse.aether.graph.Dependency;
- import org.eclipse.aether.graph.DependencyFilter;
- import org.eclipse.aether.graph.DependencyNode;
- import org.eclipse.aether.graph.DependencyVisitor;
- import org.eclipse.aether.impl.DefaultServiceLocator;
- import org.eclipse.aether.repository.LocalRepository;
- import org.eclipse.aether.repository.RemoteRepository;
- import org.eclipse.aether.resolution.DependencyResolutionException;
- import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
- import org.eclipse.aether.spi.connector.transport.TransporterFactory;
- import org.eclipse.aether.transport.file.FileTransporterFactory;
- import org.eclipse.aether.transport.http.HttpTransporterFactory;
- import org.eclipse.aether.util.artifact.JavaScopes;
- import org.eclipse.aether.util.filter.DependencyFilterUtils;
- import org.eclipse.aether.util.graph.selector.AndDependencySelector;
- import org.eclipse.aether.util.graph.selector.ExclusionDependencySelector;
- import org.eclipse.aether.util.graph.selector.OptionalDependencySelector;
- import org.eclipse.aether.util.graph.selector.ScopeDependencySelector;
- import org.eclipse.aether.util.graph.visitor.FilteringDependencyVisitor;
- import org.eclipse.aether.util.graph.visitor.TreeDependencyVisitor;
- public class CrawlerManager {
- LocalRepository localRepo = null;
- RepositorySystem system = null;
- RepositorySystemSession session = null;
- List<RemoteRepository> repositories = new ArrayList<RemoteRepository>();
- public CrawlerManager(String localRepoPath) throws IOException {
- localRepo = new LocalRepository( localRepoPath );
- system = newRepositorySystem();
- session = newSession(system);
- repositories.add((new RemoteRepository.Builder("central", "default", "http://central.maven.org/maven2/")).build());
- }
- private RepositorySystem newRepositorySystem()
- {
- DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator();
- locator.addService( RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class );
- locator.addService( TransporterFactory.class, FileTransporterFactory.class );
- locator.addService( TransporterFactory.class, HttpTransporterFactory.class );
- return locator.getService( RepositorySystem.class );
- }
- private RepositorySystemSession newSession( RepositorySystem system )
- {
- DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
- session.setLocalRepositoryManager( system.newLocalRepositoryManager( session, localRepo ) );
- DependencySelector depFilter = new AndDependencySelector(
- new ScopeDependencySelector("provided" ),
- new OptionalDependencySelector(),
- new ExclusionDependencySelector()
- );
- session.setDependencySelector(depFilter);
- return session;
- }
- public void getRecursiveDependencies(Artifact artifact) throws DependencyResolutionException, DependencyCollectionException{
- {RepositorySystem system = newRepositorySystem();
- RepositorySystemSession session = newSession(system);
- artifact = new DefaultArtifact("org.aroundthecode.pathfinder:pathfinder-server:0.1.0-SNAPSHOT");
- DependencyFilter classpathFlter = DependencyFilterUtils.classpathFilter(JavaScopes.TEST);
- CollectRequest collectRequest = new CollectRequest();
- collectRequest.setRoot(new Dependency(artifact, JavaScopes.COMPILE));
- collectRequest.setRepositories(repositories);
- //use collectDependencies to collect
- CollectResult collectResult = system.collectDependencies(session, collectRequest);
- DependencyNode node = collectResult.getRoot();
- node.accept(new TreeDependencyVisitor(new FilteringDependencyVisitor(new DependencyVisitor() {
- String indent = "";
- @Override
- public boolean visitEnter(DependencyNode dependencyNode) {
- System.out.println(indent + dependencyNode.getArtifact());
- indent += " ";
- return true;
- }
- @Override
- public boolean visitLeave(DependencyNode dependencyNode) {
- indent = indent.substring(0, indent.length() - 4);
- return true;
- }
- }, classpathFlter)));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment