简体   繁体   English

如何以编程方式获取 maven 依赖树

[英]How to get maven dependency tree programmatically

want to print maven dependency tree (all the dependencies including transitive dependencies) programmatically by just reading pom.xml file without connecting to remote repository.想要通过仅读取 pom.xml 文件而不连接到远程存储库以编程方式打印 maven 依赖关系树(所有依赖关系,包括传递依赖关系)。

Not really possible, sorry.实在不行,抱歉。 Also, have you checked the answer and comments here?另外,您是否检查过这里的答案和评论? How can you display the Maven dependency tree for the *plugins* in your project? 如何在项目中显示 *plugins* 的 Maven 依赖关系树?

I can recommend to take a look at the maven resolver project which has some example code which might be sufficient as a starting point:我可以推荐看看 maven 解析器项目,其中有一些示例代码可能足以作为起点:

https://github.com/apache/maven-resolver/tree/master/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples https://github.com/apache/maven-resolver/tree/master/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples

You can do this by using ProcessBuilder to retrieve the result of maven's dependency:tree command.您可以通过使用ProcessBuilder检索 Maven 的dependency:tree命令的结果来执行此操作。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public static void main(String[] args) {

    ProcessBuilder processBuilder = new ProcessBuilder();
    processBuilder.command("cmd.exe", "/c", "mvn -f \"C:\\myprojectpath\"", "dependency:tree");

    try {

        Process process = processBuilder.start();
        BufferedReader reader =
                new BufferedReader(new InputStreamReader(process.getInputStream()));

        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }

        int exitCode = process.waitFor();
        System.out.println("\nExited with error code : " + exitCode);

    } catch (IOException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

}

Read more here .在这里阅读更多。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM