如何生成Maven项目的所有模块之间的依赖关系图?

Hai*_*yen 49 java maven-2

如何生成Maven项目的所有模块之间的依赖关系图(不包括第三方库,如JUnit,SLF4J等)?我找不到使用m2eclipse将所有模块包含到一个图中的方法.谢谢.

Pas*_*ent 28

如果m2eclipse 的依赖关系图功能无法满足您的需求,可以查看Maven Graph插件,特别是其graph:reactor目标.

更新:m2eclipse 1.0删除依赖关系图功能.有关详细信息,请参阅:Maven POM-Editor:缺少依赖关系图

  • 图形插件现在位于中央仓库中,链接页面已过时.因此,只需调用`mvn org.fusesource.mv​​nplugins:maven-graph-plugin:reactor -Dhide-external = true`就可以完成正确的操作,无需任何pom配置. (7认同)
  • 我喜欢graph:reactor,但我没有看到任何排除第三方依赖关系的方法. (4认同)
  • 为了将来参考,有一种方法可以排除第三方依赖项(设置__hideExternal__,这将排除不在reactor构建中的依赖项),您只需要确保使用最新版本的插件.例如1.30在Maven Central中可用.为了进一步控制,特别是排除或包含基于groupId,请检查[我的插件的分支](https://github.com/theHilikus/mvnplugins/tree/groupIdFilter)或使用v1.31如果我的更改被接受主要回购.目前有待处理的拉取请求 (2认同)

Ram*_*man 9

另一个选项是com.github.janssk1 maven依赖图插件.此插件将依赖项输出到graphml文件,该文件可以在yEd等编辑器中打开和编辑.

要生成graphml文件:

mvn com.github.janssk1:maven-dependencygraph-plugin:1.0:graph
Run Code Online (Sandbox Code Playgroud)

此插件目前不提供排除第三方依赖项AFAICT的任何机制,但可以使用yEd或通过后处理graphml文件的XSLT样式表从图中手动删除它们.这是一个简单的样式表,它将删除第三方依赖项(任何依赖项不以"internal"参数提供的包开头):

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:gml="http://graphml.graphdrawing.org/xmlns/graphml"
    version="2.0">

  <xsl:output method="xml"/>
  <xsl:param name="internal"/>

  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="gml:node[not(starts-with(@id, $internal))]"/>

  <xsl:template match="gml:edge[not(starts-with(@source, $internal)) or not(starts-with(@target, $internal))]"/>

</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

并通过兼容XSLT 2.0的处理器(如Saxon)执行:

saxon input.graphml exclude-third-party-deps.xsl internal="my.package" > input-internal.graphml
Run Code Online (Sandbox Code Playgroud)


Arn*_*ier 7

它确实存在你所需要的,它被称为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可自定义可视化).

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

谢谢


jfr*_*ius 6

刚刚发现这个,效果很好,有很多输出格式和过滤方式: https: //github.com/ferstl/depgraph-maven-plugin

使用它,问题的答案就变成了一句话(可以在这个有用的博客条目中找到:

mvn com.github.ferstl:depgraph-maven-plugin:3.0.1:aggregate -DcreateImage=true -DreduceEdges=false -Dscope=compile "-Dincludes=your.group.id*:*"


Car*_*los 5

也可以查看这个项目:https: //github.com/roclas/pomParser

它创建了一个非常酷的"图形",可以通过两种方式(向前和向后)进行导航.这个想法非常简单,您可以非常轻松地下载和更改代码.