dependency:tree可用于查看给定项目的依赖关系树.但我需要的是看到第三方工件的依赖树.
我想我可以创建一个空项目,但我正在寻找更容易的东西(我需要为几个工件做这个).
在我的插件中,我需要处理依赖关系层次结构并获取有关每个依赖关系的信息(groupId,artifactId,version等)以及它是否被排除.做这个的最好方式是什么?
如何以编程方式获取Maven模块在Maven执行环境之外的所有依赖项?
到目前为止,我有:
通过maven-core:
Path pomPath = ...;
MavenXpp3Reader reader = new MavenXpp3Reader();
try (InputStream is = Files.newInputStream(pomPath)) {
Model model = reader.read(is);
this.mavenProject = new MavenProject(model);
}
Run Code Online (Sandbox Code Playgroud)
并通过jcabi-aether:
File localRepo = Paths.get(System.getProperty("user.home"), ".m2").toFile();
new Classpath(mavenProject, localRepo, "runtime")
Run Code Online (Sandbox Code Playgroud)
到目前为止这一般是正确的吗?
现在的问题是我得到一个NullPointerException:
Caused by: java.lang.NullPointerException
at com.jcabi.aether.Aether.mrepos(Aether.java:197)
at com.jcabi.aether.Aether.<init>(Aether.java:140)
at com.jcabi.aether.Classpath.<init>(Classpath.java:125)
Run Code Online (Sandbox Code Playgroud)
因为mavenProject.getRemoteProjectRepositories()返回null.
如何初始化MavenProject以包含已配置的远程repos,同时考虑settings.xml文件(镜像,代理,存储库等)?