使用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)); }