使用Aether获取MavenProject的所有依赖项(包括可传递的)

如何使用Aether获取MavenProject(包括传递的)的所有依赖项?

我已经看到了许多你指定gav例子,它解析了工件及其所有的依赖关系。 这一切都很好。 但是,如果您的插件应该从您尝试解决的依赖项的同一个项目中调用,那么这似乎不起作用(或者我做错了)。 有人可以给我一个如何做的工作实例吗?

我已经尝试过使用此SOpost中显示的jcabi-aether的示例。

尝试使用jcabi-aether的实用程序类Classpath

 Collection jars = new Classpath( this.getProject(), new File(this.session.getLocalRepository().getBasedir()), "test" // the scope you're interested in ); 

您将获得一个JAR和目录列表,这些JAR和目录位于您插件所在的当前Maven项目的“测试”范围内。

如果您有兴趣获取Artifact的列表而不是File ,请直接使用Aether类:

 Aether aether = new Aether(this.getProject(), repo); Set artifacts = new HashSet(); for (Artifact dep : this.getProject().getDependencyArtifacts()) { artifacts.addAll(aether.resolve(dep, JavaScopes.COMPILE)); }