如何查找从BOM表导入的Maven依赖版本声明

Mar*_*tör 5 maven maven-bom

多模块父POM声明以下物料清单导入:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>io.spring.platform</groupId>
      <artifactId>platform-bom</artifactId>
      <version>${spring.io.platform.version}</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

然后,模块POM声明一个Hibernate依赖项:

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

如何使用Maven命令行或IntelliJ找出有效的Hibernate版本已定义?

运行mvn dependency:tree我的模块产生:

...
[INFO] +- org.hibernate:hibernate-core:jar:4.3.11.Final:compile
...
Run Code Online (Sandbox Code Playgroud)

这并不是完全有帮助,因为它看起来与我自己管理Hibernate版本没有什么不同。如果您必须手动执行此操作,

  • 从开始platform-bom-2.0.3.RELEASE.pom,搜索休眠->没有
  • 去它的父母spring-boot-starter-parent-1.3.3.RELEASE.pom,寻找休眠->没有
  • 母公司spring-boot-dependencies-1.3.3.RELEASE.pom,搜索休眠- >最后...

可是多么痛苦。当然,您可以查看http://docs.spring.io/platform/docs/current/reference/htmlsingle/#appendix-dependency-versions,  但是Maven是否应该能够自己找到信息?

小智 12

mvn help:effective-pom -Dverbose=true 给出了 pom 的位置信息,从一个条目在评论中进入有效 pom 的位置。参考:http : //maven.apache.org/plugins/maven-help-plugin/effective-pom-mojo.html


Did*_*r L 10

我试图mvn help:effective-pom -Dverbose另一个答案中使用,但它对我不起作用,因为它使用的是 maven-help-plugin:2.2,并-Dverbose在 3.2.0 中引入

相反,您应该在命令行中强制使用版本

mvn org.apache.maven.plugins:maven-help-plugin:3.2.0:effective-pom -Dverbose=true -Doutput=effective-pom.xml
Run Code Online (Sandbox Code Playgroud)

(最好使用,-Doutput因为文件可能很大,在终端中读取不方便)

  • 如果依赖项来自 bom,它会很好地报告这一点。但如果 bom 也来自另一个 bom,则不会显示。 (8认同)
  • @thehpi,这太疯狂了,使用 gradle (imo)是多么容易,使用 Maven 是多么_不可能_。 (2认同)

Pin*_*ino 5

在 Eclipse 中,当查看 XML 格式的 pom 时(即在“pom.xml”选项卡中,而不是“Overview”选项卡中),只需将鼠标光标放在工件名称上,就会出现一个弹出窗口,其中包含有效版本和位置它是在哪里定义的。

在此输入图像描述