簡體   English   中英

如何使用Maven的Java API訪問Maven Artifact POM?

[英]How can I access Maven Artifact POM using Maven's Java API?

我試圖從項目的根目錄開始檢索整個依賴關系樹及其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()); 
}           

實際上你非常接近閱讀依賴項。 所有缺失的是:

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());
} 

這不會使您獲得依賴關系樹,但您可以為找到的依賴關系重復它。

不幸的是,這不是那么簡單:-)我可以給你一些建議(考慮到你只需要來自中央倉庫的工件)。

這是我在Github上找到的一個很好的示例代碼 另一種方法是使用中央存儲庫REST API 這是一個如何以編程方式執行此操作的示例。

順便說一句,如果你只需要依賴項,你也可以直接使用maven-dependency-plugin (這可以在例如mvn dependency:tree上調用 - 參見這個例子中的線程 )。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM