package org.bundlemaker.core.mvn.content; import java.io.File; import java.util.List; import org.apache.maven.model.Dependency; import org.bundlemaker.core.mvn.MvnCoreActivator; import org.bundlemaker.core.mvn.internal.config.SimpleRepositoryAdapter; import org.sonatype.aether.RepositorySystem; import org.sonatype.aether.RepositorySystemSession; import org.sonatype.aether.RequestTrace; import org.sonatype.aether.artifact.Artifact; import org.sonatype.aether.collection.CollectRequest; import org.sonatype.aether.graph.DependencyFilter; import org.sonatype.aether.repository.RemoteRepository; import org.sonatype.aether.resolution.ArtifactResult; import org.sonatype.aether.resolution.DependencyRequest; import org.sonatype.aether.util.DefaultRequestTrace; import org.sonatype.aether.util.artifact.DefaultArtifact; import org.sonatype.aether.util.artifact.JavaScopes; import org.sonatype.aether.util.filter.DependencyFilterUtils; /** * Resolves the transitive (compile) dependencies of an artifact. */ public class ResolveTransitiveDependencies { public static void main(String[] args) throws Exception { System.out.println("------------------------------------------------------------"); System.out.println(ResolveTransitiveDependencies.class.getSimpleName()); // create the adapter SimpleRepositoryAdapter adapter = new SimpleRepositoryAdapter(new File(MvnCoreActivator.DEFAULT_MVN_LOCAL_REPO), MvnCoreActivator.DEFAULT_MVN_REMOTE_REPO); RepositorySystem system = adapter.getRepositorySystem(); RepositorySystemSession session = adapter.newSession(); Artifact artifact = new DefaultArtifact("org.apache.cxf:cxf-api:2.7.2"); DependencyFilter classpathFlter = DependencyFilterUtils.classpathFilter(JavaScopes.COMPILE); CollectRequest collectRequest = new CollectRequest(); collectRequest.setRoot(new org.sonatype.aether.graph.Dependency(artifact, JavaScopes.COMPILE)); for (RemoteRepository remoteRepository : adapter.getRemoteRepositories()) { collectRequest.addRepository(remoteRepository); } DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, classpathFlter); List<ArtifactResult> artifactResults = system.resolveDependencies(session, dependencyRequest).getArtifactResults(); for (ArtifactResult artifactResult : artifactResults) { System.out.println(artifactResult.getArtifact() + " resolved to " + artifactResult.getArtifact().getFile()); } } }