public List findDependencies(Artifact artifact) throws DependencyCollectionException {
CollectRequest collectRequest = new CollectRequest();
collectRequest.setRoot( new Dependency(artifact, "" ) );
collectRequest.addRepository(repository);
final MavenServiceLocator locator = new MavenServiceLocator();
locator.addService( RepositoryConnectorFactory.class, FileRepositoryConnectorFactory.class );
locator.addService( RepositoryConnectorFactory.class, WagonRepositoryConnectorFactory.class );
locator.setServices( WagonProvider.class, new WagonProvider() {
public Wagon lookup(String roleHint) throws Exception {
if (Arrays.asList("http", "https").contains(roleHint)) {
return new LightweightHttpWagon();
}
return null;
}
public void release(Wagon wagon) {
}
});
final RepositorySystem system = locator.getService(RepositorySystem.class);
MavenRepositorySystemSession session = new MavenRepositorySystemSession();
session.setLocalRepositoryManager( system.newLocalRepositoryManager(localRepository) );
session.setTransferListener( new LoggingTransferListener() );
session.setRepositoryListener( new LoggingRepositoryListener() );
final List artifacts = new ArrayList();
system.collectDependencies(session, collectRequest).getRoot().accept( new DependencyVisitor() {
public boolean visitEnter(DependencyNode dependencyNode) {
artifacts.add(dependencyNode.getDependency().getArtifact());
return true;
}
public boolean visitLeave(DependencyNode dependencyNode) {
return true;
}
});
return artifacts;
}