import java.util.List;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.project.MavenProject;
import org.sonatype.aether.RepositorySystem;
import org.sonatype.aether.RepositorySystemSession;
import org.sonatype.aether.collection.CollectRequest;
import org.sonatype.aether.collection.CollectResult;
import org.sonatype.aether.collection.DependencyCollectionException;
import org.sonatype.aether.graph.Dependency;
import org.sonatype.aether.graph.DependencyNode;
import org.sonatype.aether.repository.RemoteRepository;
import org.sonatype.aether.util.artifact.DefaultArtifact;
import org.sonatype.aether.util.graph.FilteringDependencyVisitor;
import org.sonatype.aether.util.graph.PreorderNodeListGenerator;
/**
*
* @goal z
*
*/
public class MyMojo extends AbstractMojo {
/**
* The entry point to Aether, i.e. the component doing all the work.
*
* @component
*/
private RepositorySystem repoSystem;
/**
* The current repository/network configuration of Maven.
*
* @parameter default-value="${repositorySystemSession}"
* @readonly
*/
private RepositorySystemSession repoSession;
/**
* The project's remote repositories to use for the resolution.
*
* @parameter default-value="${project.remoteProjectRepositories}"
* @readonly
*/
private List<RemoteRepository> remoteRepos;
/**
* @parameter default-value="${project}"
* @readonly
*/
private MavenProject project;
public void execute() throws MojoFailureException, MojoExecutionException {
Dependency dependency = new Dependency(new DefaultArtifact(project.getArtifact().getId()), "compile");
CollectRequest collectRequest = new CollectRequest();
collectRequest.setRoot(dependency);
collectRequest.setRepositories(remoteRepos);
CollectResult collectResult = null;
try {
collectResult = repoSystem.collectDependencies(repoSession, collectRequest);
} catch (DependencyCollectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
PreorderNodeListGenerator nlg = new PreorderNodeListGenerator();
FilteringDependencyVisitor fdv = new FilteringDependencyVisitor(nlg, null);
DependencyNode node = collectResult.getRoot();
node.accept(fdv);
for (DependencyNode dependencyNode : nlg.getNodes()) {
System.out.println(dependencyNode);
}
}
}