【发布时间】:2015-04-23 13:13:11
【问题描述】:
我正在尝试解决项目的直接依赖关系,基本上是其 POM 中的运行时和编译时依赖关系以及传递性。为此,我有以下代码
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 );
}
}
}
这可以正常工作,但我如何获得“已解决”的依赖项列表。我需要能够在我的本地存储库中下载这个已解决的工件。基本上我需要一个 List 来返回,我可以从它访问本地磁盘上的 jar。
【问题讨论】:
-
为什么不使用已经下载所有需要的工件的 Maven 本身?
-
我正在尝试解决 pom 的所有直接和传递依赖项
-
这不能回答我的问题。 Maven 已经这样做了。通过 Java 代码而不是使用 Maven 本身的目的是什么?
-
maven 是否将所有依赖项解析到一个 jar 中?
-
您想创建一个 jar-with-dependencies 或 ueberjar/fatjar 吗?如果是这样,这可以通过 maven-assembly-plugin 或 maven-shade-plugin 来实现吗?
标签: maven dependencies artifacts aether