2015-04-29 59 views
1

在很多文章中,我看到Aether項目有助於處理工件存儲庫。我想要的是隻檢索指定的groupIdartifactId的最高版本。如何從本地存儲庫以編程方式獲取Maven工件的最高版本?

在奧德維基他們目前的org.apache.maven的情況下:Maven的配置文件:2.2.1神器,他們還指定版本:

Dependency dependency = 
    new Dependency(
     new DefaultArtifact("org.apache.maven:maven-profile:2.2.1"), 
     "compile" 
    ); 

但我需要找回版本,這是工件的最高版本。我怎麼能這樣做?

+0

你想做什麼?你的用例是什麼? –

+0

我自定義的Maven插件我知道工件的groupId和artifactId,我想在本地存儲庫(.m2)中獲得最高安裝版本。最基本的方法是將本地存儲庫作爲路徑傳遞並根據已知的ID進行遍歷。但如果可以用一個優雅的解決方案,我寧願這樣做。 SK –

回答

0

如果您可以閱讀pom.xml文件,可以使用純XML解析來完成。

public static String getVersionOf(File pomFile) throws ParserConfigurationException, IOException, SAXException { 
    String version = ""; 

    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
    Document doc = dBuilder.parse(pomFile); 

    NodeList nodeList = doc.getElementsByTagName("project"); 

    for(int i = 0; i < nodeList.getLength(); i++) { 
     Element node = (Element) nodeList.item(i); 

     version = node.getElementsByTagName("version").item(0).getTextContent(); 
    } 

    return version; 
} 
相關問題