Как программно получить самую высокую версию для артефакта Maven из моего локального хранилища?

Во многих постах я видел, что проект Aether помогает в работе с репозиториями артефактов. Я хотел бы получить самую высокую версию только для указанного groupId и artifactId.

В эфире вики они представляют случай для org.apache.maven:maven-profile:2.2.1 артефакт, где они также указывают версию:

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

Но мне нужно вернуть версию, самую высокую версию для артефакта. Как я мог это сделать?

1 ответ

Если вы можете прочитать файл 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;
}
Другие вопросы по тегам