【问题标题】:Maven dependency graphMaven依赖图
【发布时间】:2013-07-01 20:28:00
【问题描述】:

有没有办法获得给定项目集的 Maven 依赖关系图(如果可能,图形化),而无需绘制第 3 方依赖关系?或者我在哪里选择退出我不感兴趣的依赖项?

我想将工具/插件指向一些 POM 文件,并查看这些项目之间依赖关系的描述。

【问题讨论】:

  • 如果您使用的是 eclipse,您有一个 dependencies 视图,您可以在该视图上以图形方式排除依赖关系。
  • 此视图仅适用于给定项目,我想了解我的项目之间的关系

标签: java maven


【解决方案1】:

如果您使用mvn dependency:tree,您可以使用-Dexcludes-Dincludes 指定要排除或包含的文件。输出是对依赖项的 ASCII 艺术风格的描述。

请参阅docs 了解更多信息。

【讨论】:

  • 但这只是针对给定项目,不是吗?我真的很想看看我的项目之间的关系。
  • 类似这样的东西 (mvnplugins.fusesource.org/maven/1.0/maven-graph-plugin),但显然这个不提供选择退出第 3 方
  • @Simhor 所以你想指向一些 POM 文件并查看这些项目之间的关系图吗?
  • 或者程序可以只推断子模块,只需提供顶部 pom.xml
【解决方案2】:

那里正是你需要的,它被称为 Pom Explorer

你可以在这里找到网站:github.com/ltearno/pom-explorer

它是一个处理 maven 项目图的工具。作为预告片,我可以说在我的机器上它在 4 秒内分析了 4000 个 pom.xml 文件。然后在分析的 pom 图上方提供了许多功能:

  • 依赖分析(谁依赖GAV,这个GAV依赖哪个gav,具有传递性),
  • 分辨率(pom explorer 知道定义的属性在哪里,它管理依赖项和 bom 导入),
  • 操作(您可以使用它来转换您的 pom 图,假设您希望许多项目使用新版本的依赖项),
  • 构建(pom explorer 分析您的 pom 图表并知道它们应该按什么顺序构建,然后构建所有内容!它甚至可以查看您的项目目录是否有变化),
  • 正在导出(今天有 CSV 和 GRAPHML 导出),
  • 可视化(pom explorer 可以向您展示项目图表的交互式 3D 可自定义可视化)。

它现在正在积极开发中,所以不要犹豫,尝试它,报告错误并请求有用的功能!文档还没有完成,所以再次不要犹豫!

谢谢

【讨论】:

  • 不错的工具,你能解释一下为了简单地获得一组给定的 maven 项目的依赖关系图需要做什么吗?到目前为止,我可以分析包含项目集的文件夹并使用 pom-explorer 列出所有 gav。我需要做什么才能获得这些项目(没有第三方)之间的依赖关系图以进行进一步处理。我想要的是在 maven 项目之间有一个简单的图表,以了解如何以正确的顺序构建项目。
  • 您可以使用graph export [gav_filter] 命令导出代表您的项目的graphml 文件。然后你可以用 yEd 过滤它。如果您喜欢 3d WebGL 图形命令 (graph),则可以直接在图形界面中过滤显示的 GAV。也许最好将此问题作为文档问题发布在 github 项目上,以便其他人可以受益...github.com/ltearno/pom-explorer/issues
  • 对不起,gui 很麻烦。是否有命令行方式使用该工具?
  • gui 尝试像命令行一样。暂时没有其他选择。期望可能会在 pom-explorer.jar 周围编写一个小命令行包装器
【解决方案3】:
mvn com.github.ferstl:depgraph-maven-plugin:aggregate -Dincludes=com.yourcompany.pkg

对我来说很好。

【讨论】:

  • 迄今为止我尝试过的最好的,但它被编译/测试依赖所迷惑。默认情况下具有“测试”范围的依赖项,被覆盖为“编译”是一个子项目不被考虑在内。某些依赖项可能会出现多次。
【解决方案4】:

我喜欢 depgraph-maven-plugin 来可视化多模块项目中的依赖关系,另请参阅 previous answer

要为您的模块获取文本格式的聚合结果(如 dependency:tree),请使用:

mvn com.github.ferstl:depgraph-maven-plugin:aggregate -DgraphFormat=text -Dincludes=myGroupId

include 的语法与maven-dependency-plugin includes 相同。

它有很多properties to customize the result/behavior。我更喜欢将它与graphviz 一起使用,因此我可以使用(默认)图形格式dot 并让它在target 文件夹中创建一个png 文件:

mvn com.github.ferstl:depgraph-maven-plugin:aggregate -DcreateImage -Dincludes=myGroupId

还有其他有趣的goals,例如example 的目标是快速使用这些属性。

【讨论】:

    【解决方案5】:

    您可以使用POM2RDF 生成项目依赖项(及其依赖项等)的 RDF 图,然后您可以查询该图以获取软件材料清单或可视化为依赖关系图。

    免责声明:我是作者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-10
      • 1970-01-01
      • 2011-04-22
      • 2019-09-02
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      相关资源
      最近更新 更多