首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Maven的Java API访问Maven Artifact?

如何使用Maven的Java API访问Maven Artifact?
EN

Stack Overflow用户
提问于 2012-07-26 04:28:58
回答 2查看 8.6K关注 0票数 11

我试图从项目的根开始检索整个依赖关系树和它们的pom。我从文件系统中已经存在的POM开始,但我不确定如何从存储库中检索依赖项POM。

我使用以下代码来访问依赖项列表。从列表中,我得到了所有关于工件的信息。我只是不确定如何访问存储库。

代码语言:javascript
复制
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()); 
}           
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-27 01:16:43

实际上,您已经非常接近读取依赖项了。所缺少的就是:

代码语言:javascript
复制
Model model = mavenreader.read(new FileReader(pomFile));

完整示例:

代码语言:javascript
复制
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());
} 

这不会得到依赖关系树,但您可以对找到的依赖关系重复此树。

票数 4
EN

Stack Overflow用户

发布于 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的例子)。

也许你的方法也可以工作,但我猜它需要一些缺失的部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11658087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档