我试图从项目的根开始检索整个依赖关系树和它们的pom。我从文件系统中已经存在的POM开始,但我不确定如何从存储库中检索依赖项POM。
我使用以下代码来访问依赖项列表。从列表中,我得到了所有关于工件的信息。我只是不确定如何访问存储库。
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());
} 发布于 2014-12-27 01:16:43
实际上,您已经非常接近读取依赖项了。所缺少的就是:
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());
} 这不会得到依赖关系树,但您可以对找到的依赖关系重复此树。
发布于 2012-07-26 05:42:06
不幸的是,这并不是那么微不足道:-)我可以给你一些建议(考虑到你只需要来自中央存储库的工件)。
这是我在Github找到的一个很棒的example code。另一种选择是使用REST API of the central repo。下面是一个如何使用do that programmatically的示例。
顺便说一句,如果你只需要依赖项,你也可以直接使用maven-dependency-plugin (这是在mvn dependency:tree上调用的-参见this thread的例子)。
也许你的方法也可以工作,但我猜它需要一些缺失的部分。
https://stackoverflow.com/questions/11658087
复制相似问题