Sharanya M.
Sharanya M.

Reputation: 89

How to resolve maven dependency and get all the transitive dependencies using Maven Artifact Resolver?

I have a maven project and I am trying to get all the transitive dependencies of direct dependency using Artifact resolver APIs.How to attain this programmatically?

The same functionality I am able to attain using aether-1.1.0.But we need to migrate to Maven Artifact Resolver{https://maven.apache.org/resolver/index.html}.I tried few things like below,

@Component
private org.apache.maven.repository.RepositorySystem repoSystem;
..
ArtifactRepository artifactRepo = new MavenArtifactRepository();
org.apache.maven.repository.Proxy mavenProxy = new org.apache.maven.repository.Proxy();
mavenProxy.setHost(proxyDetails.getHost());
mavenProxy.setPort(proxyDetails.getPort());

Artifact sourcesArtifact = repoSystem.createArtifact(rootGroupId, rootArtifact, rootVersion, JavaScopes.COMPILE,"jar");
sourcesArtifact.setRepository(artifactRepo);
ArtifactResolutionRequest request2 = new ArtifactResolutionRequest().setArtifact(sourcesArtifact);
ArtifactResolutionResult depResult =repoSystem.resolve(request2);
result2.getArtifacts().forEach(dep5 -> {
System.out.println(dep5.getId());
....}

But it is not printing any transitive dependencies here

Expected Result is : I need the list of transitive dependency for the given direct dependency.

Upvotes: 0

Views: 508

Answers (1)

kutschkem
kutschkem

Reputation: 8163

Use org.eclipse.aether.resolution.DependencyRequest, the javadoc states:

A request to resolve transitive dependencies. This request can either be supplied with a CollectRequest to calculate the transitive dependencies or with an already resolved dependency graph.

This is then used as an argument to RepositorySystem.resolveDependencies

Upvotes: 0

Related Questions