如何以编程方式获取所有传递依赖项

时间:2015-02-11 07:06:53

标签: java maven

我已经看过很多这方面的帖子,但是我要说我不是在写一个插件。 我正在制作一个项目分析器,需要找出已解决的依赖关系及其路径。

给定一个pom.xml(在一个项目中)我想找出所有的依赖关系(也是传递的)和它们的路径,如果可能的话也会找到缺少的依赖关系。

获得独立于版本的解决方案将是一种奖励。

PS:每个答案都建议使用exec在cli上运行命令,我已经在使用它了,并希望找到一个更好的方法来做到这一点。

2 个答案:

答案 0 :(得分:2)

您可以使用maven依赖插件。我使用过的两个,发现我在下面提到的非常有帮助:

  1. dependency:tree
  2. 显示使用的直接和传递的整个依赖项的树结构。请务必使用详细模式。
    Link

    1. dependency:list
    2. 以列表方式显示项目中使用的所有依赖项。当我需要知道什么是传递以及哪些是直接用于许可目的时,我个人并不觉得这很方便。但是当它只需要知道您正在使用什么或检测具有不同版本的重复库时,它就有它的位置。
      Link

      此外还有分析,在阅读文档时,它似乎非常方便,但我需要尝试这一点,我会。

      1. dependency:analyze

答案 1 :(得分:0)

使用mvn dependency:tree。对于编程访问,只需使用java Process api。

http://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html

Java Process with Input/Output Stream

Maven插件也是简单的java类。您可以下载依赖:树插件的代码并使用它/根据您的喜好修改它。