我正在尝试从项目的根目录开始检索整个依赖关系树及其poms。我开始使用已存在于我的文件系统中的POM,但我不确定如何从存储库中检索依赖poms。
我使用以下代码访问依赖项列表。从列表中我可以获得有关工件的所有信息。我只是不确定如何访问存储库。
FileReader reader = null;
Model model = null;
MavenXpp3Reader mavenreader = new MavenXpp3Reader();
File pomfile = new File("pom.xml");
model.setPomFile(pomfile);
MavenProject project = new MavenProject(model);
List<Dependency> deps = project.getDependencies();
// Get dependency details
for (Dependency d: deps) {
System.out.print(d.getArtifactId());
System.out.print(":");
System.out.println(d.getVersion());
}
答案 0 :(得分:3)
实际上你非常接近阅读依赖项。所有缺失的是:
Model model = mavenreader.read(new FileReader(pomFile));
完整示例:
MavenXpp3Reader mavenreader = new MavenXpp3Reader();
File pomfile = new File("pom.xml");
Model model = mavenreader.read(new FileReader(pomFile));
List<Dependency> deps = model.getDependencies();
for (Dependency d: deps) {
System.out.print(d.getArtifactId());
}
这并没有为您提供依赖树,但您可以为您找到的依赖项重复它。
答案 1 :(得分:1)
不幸的是,这不是那么简单:-)我可以给你一些建议(考虑到你只需要来自中央仓库的工件)。
这是我在Github找到的一个很棒的example code。另一种方法是使用REST API of the central repo。以下是do that programmatically。
的示例顺便说一句,如果您只需要依赖项,您也可以直接使用maven-dependency-plugin(例如mvn dependency:tree
调用此方法 - 请参阅this thread示例)。
可能你的方法也可以,但我想它需要一些缺失部分。