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

Java 使用Ether获取MavenProject的所有依赖项(包括可传递的依赖项),java,maven,maven-3,aether,Java,Maven,Maven 3,Aether,如何使用Ether获得MavenProject的所有依赖项(包括可传递的依赖项) 我看到过许多例子,其中您指定了gav,它解析工件及其所有依赖项。这一切都很好。但是,如果您的插件应该从您试图解析其依赖关系的同一个项目中调用,那么这似乎不起作用(或者可能是我做错了)。有人能给我一个如何做的工作例子吗 我已经尝试了jcabi乙醚的示例,如所示。尝试使用以下工具类: 尝试从以下位置使用实用程序类: 我正在看你的项目。有两件事:1)您的源文件工件似乎没有正确打包(我看到您是通过汇编插件打包的,但是它为工

如何使用Ether获得MavenProject的所有依赖项(包括可传递的依赖项)

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


我已经尝试了jcabi乙醚的示例,如所示。

尝试使用以下工具类:


尝试从以下位置使用实用程序类:


我正在看你的项目。有两件事:1)您的
源文件
工件似乎没有正确打包(我看到您是通过汇编插件打包的,但是它为工件生成的目录结构是这样的,IDE无法识别源文件,因为它们不在根目录中,而是在
${project.artifactId}中/src/main/java
);2) 这是一个很好的例子,我将进一步研究它。您能告诉我如何获得
工件
-s而不是直接使用
文件
-s吗?谢谢如果您提交第一个问题,我会尽快解决。关于第二个问题,请参阅我的答案UpdatedTanks!我已经接受了你的回答,并授予你赏金。一个小提示:上面粘贴的代码不可编译,它需要一个
文件
对象,而不是
字符串
。另外,它还概述了使用您的库进行操作的正确方法。也许你可以在你的例子中改进一下,这样将来就不会有人怀疑了。谢谢,我已经修正了答案,我正在看你的项目。有两件事:1)您的
源文件
工件似乎没有正确打包(我看到您是通过汇编插件打包的,但是它为工件生成的目录结构是这样的,IDE无法识别源文件,因为它们不在根目录中,而是在
${project.artifactId}中/src/main/java
);2) 这是一个很好的例子,我将进一步研究它。您能告诉我如何获得
工件
-s而不是直接使用
文件
-s吗?谢谢如果您提交第一个问题,我会尽快解决。关于第二个问题,请参阅我的答案UpdatedTanks!我已经接受了你的回答,并授予你赏金。一个小提示:上面粘贴的代码不可编译,它需要一个
文件
对象,而不是
字符串
。另外,它还概述了使用您的库进行操作的正确方法。也许你可以在你的例子中改进一下,这样将来就不会有人怀疑了。谢谢,我已经解决了这个问题
Collection<File> jars = new Classpath(
  this.getProject(),
  new File(this.session.getLocalRepository().getBasedir()),
  "test" // the scope you're interested in
);
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));
}