如何显示Maven POM层次结构?

Tod*_*odd 24 maven-2

我正在做一些脚本,我需要得到任何给定pom的所有父pom的列表.依赖插件似乎只对pom的依赖项部分中列出的依赖项感兴趣,但似乎没有办法显示父poms,这也是Maven工作所需的依赖项.

我错过了什么基本的东西?

HDa*_*ave 23

没有简单的Maven命令可以显示pom.xml的父POM链.这样做的原因是它不是人们通常会问的常见问题(下面将详细介绍).对于您的脚本,您只需要解析pom.xml文件,获取父工件坐标,获取工件的pom.xml文件,然后解析它的pom.xml文件(并重复).对不起,但我知道没有捷径,但其他人已经解决了类似的问题.

你是对的,从技术上讲,父pom是你项目的依赖项,但它不是文字Maven依赖项,并且处理方式完全不同.父poms链以及活动配置文件,settings.xml文件和安装目录中的Maven super pom都组合在一起,以创建项目的有效pom.有效的POM是Maven真正用来完成它的工作.所以基本上,在依赖插件(或任何其他插件)被激活之前,父pom继承链已经被解析和组合.

大多数人通常会问的问题是" 当Maven完成所有内容时,我的REAL pom.xml 真的是什么样子?" 或者"父母poms的继承链是什么结果?" 或者'我的pom.xml属性如何受到活动配置文件的影响?' 有效的pom将告诉你所有这一切.

我知道你没有问,但是对于其他人来说,如果你想看到你的父pom.xml,只需打开M2Eclipse POM编辑器中的pom.xml,然后点击概览选项卡上的父工件链接.通过这种方式,您只需单击每个pom即可快速向上移动pom.xml文件链.这将是一个奇怪的项目,有超过3或4个父遗产的poms.

如果要查看有效的pom,可以运行该命令mvn help:effective-pom.或者,您可以单击M2Eclipse的POM编辑器中的Effective POM选项卡.


Pet*_*nto 10

基本解决方案

mvn org.apache.maven.plugins:maven-dependency-plugin:3.1:display-ancestors
Run Code Online (Sandbox Code Playgroud)

如果您的项目定义了3.1或更高版本,您可以使用:

mvn dependency:display-ancestors
Run Code Online (Sandbox Code Playgroud)

输出看起来类似于:

[INFO] Ancestor POMs: org.springframework.boot:spring-boot-starter-parent:1.4.0.RELEASE <- org.springframework.boot:spring-boot-dependencies:1.4.0.RELEASE

改进的方案

hierarchy-maven-plugin(我写的)可以显示有关导入poms的其他信息,如下所示:

[INFO] Displaying hierarchy. Set level=full to display dependencies in dependencyManagement
[INFO]  PARENT org.springframework.boot:spring-boot-samples:1.4.1.BUILD-SNAPSHOT
[INFO]    PARENT org.springframework.boot:spring-boot-starter-parent:1.4.1.BUILD-SNAPSHOT
[INFO]      PARENT org.springframework.boot:spring-boot-dependencies:1.4.1.BUILD-SNAPSHOT
[INFO]        IMPORT org.springframework:spring-framework-bom:4.3.3.BUILD-SNAPSHOT
[INFO]        IMPORT org.springframework.data:spring-data-releasetrain:Hopper-BUILD-SNAPSHOT
[INFO]          PARENT org.springframework.data.build:spring-data-build:1.8.4.BUILD-SNAPSHOT
[INFO]        IMPORT org.springframework.integration:spring-integration-bom:4.3.1.RELEASE
[INFO]        IMPORT org.springframework.security:spring-security-bom:4.1.3.RELEASE
Run Code Online (Sandbox Code Playgroud)

详细信息如下:https://github.com/ExampleDriven/hierarchy-maven-plugin

  • 请注意,您至少需要v2.9的依赖插件才能实现该目标:https://maven.apache.org/plugins/maven-dependency-plugin/display-ancestors-mojo.html (2认同)