如何使用Aether获取MavenProject的所有依赖项(包括可传递的依赖项)?
我已经看到了许多你指定gav
的例子,它解析了工件及其所有的依赖关系。这一切都很好。但是,如果您的插件应该从您尝试解决的依赖项的同一项目中调用,那么这似乎不起作用(或者我做错了)。有人可以给我一个如何做的工作实例吗?
我已尝试使用this SO post中显示的jcabi-aether示例。
答案 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));
}