简体   繁体   English

如何使用Maven Artifact Resolver解决Maven依赖关系并获取所有传递依赖关系?

[英]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? 我有一个Maven项目,我正在尝试使用Artifact解析器API获取所有直接依赖的传递依赖。如何以编程方式实现这一目标?

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, 使用aether-1.1.0可以达到相同的功能。但是我们需要迁移到Maven Artifact Resolver { https://maven.apache.org/resolver/index.html }。我尝试了以下类似的操作,

@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. 预期结果是:对于给定的直接依赖关系,我需要传递依赖关系的列表。

Use org.eclipse.aether.resolution.DependencyRequest, the javadoc states: 使用org.eclipse.aether.resolution.DependencyRequest时, javadoc会指出:

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. 可以为该请求提供一个CollectRequest来计算可传递依赖关系,或者可以为该请求提供已解析的依赖关系图。

This is then used as an argument to RepositorySystem.resolveDependencies 然后将其用作RepositorySystem.resolveDependencies的参数

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM