[英]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();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.