目前,在处理MavenProject时,我使用getDependencyArtifacts获取直接(非传递)依赖项。但是,此方法被标记为不推荐使用。那么,我该用什么代替呢?我看到了方法getDependencies,但是它获取传递依赖项,我看不到任何方法来过滤直接依赖项。
我是否应该使用RepositorySystem及其方法collectDependencies,并导航生成的图,并只获取根的子元素,我猜这实际上是直接依赖关系吗?难道我没有更直接、不反对的方法吗?
发布于 2022-10-11 08:15:07
这是基于快速搜索,有一个现有的API称为乙醚。它的文档不是很好。
它中的方法名为:getDependencies()
,它根据javadoc检索直接依赖项。
在github上有一个例子:
public class GetDirectDependencies
{
public static void main( String[] args )
throws Exception
{
System.out.println( "------------------------------------------------------------" );
System.out.println( GetDirectDependencies.class.getSimpleName() );
RepositorySystem system = Booter.newRepositorySystem();
RepositorySystemSession session = Booter.newRepositorySystemSession( system );
Artifact artifact = new DefaultArtifact( "org.eclipse.aether:aether-impl:1.0.0.v20140518" );
ArtifactDescriptorRequest descriptorRequest = new ArtifactDescriptorRequest();
descriptorRequest.setArtifact( artifact );
descriptorRequest.setRepositories( Booter.newRepositories( system, session ) );
ArtifactDescriptorResult descriptorResult = system.readArtifactDescriptor( session, descriptorRequest );
for ( Dependency dependency : descriptorResult.getDependencies() )
{
System.out.println( dependency );
}
}
}
https://stackoverflow.com/questions/74024068
复制相似问题