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

时间:2013-05-10 10:33:55

标签: java maven maven-3 aether

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

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

我已尝试使用this SO post中显示的jcabi-aether示例。

1 个答案:

答案 0 :(得分:1)

尝试使用Classpath中的实用工具类jcabi-aether

Collection<File> 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<Artifact> artifacts = new HashSet<Artifact>();
for (Artifact dep : this.getProject().getDependencyArtifacts()) {
  artifacts.addAll(aether.resolve(dep, JavaScopes.COMPILE));
}