18

多模块父 POM 声明以下 BOM 导入:

<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>

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

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
</dependency>

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

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

...
[INFO] +- org.hibernate:hibernate-core:jar:4.3.11.Final:compile
...

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

  • 从 开始platform-bom-2.0.3.RELEASE.pom,搜索 Hibernate -> nothing
  • 转到它的父级spring-boot-starter-parent-1.3.3.RELEASE.pom,搜索 Hibernate -> nothing
  • 转到它的父级spring-boot-dependencies-1.3.3.RELEASE.pom,搜索 Hibernate -> finally...

但这是多么严峻的考验。当然,您可以检查http://docs.spring.io/platform/docs/current/reference/htmlsingle/#appendix-dependency-versions 但这些信息不是 Maven 应该能够自己找到的吗?

4

6 回答 6

18

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

于 2019-09-27T23:39:15.513 回答
15

我试图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

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

于 2019-10-31T16:22:44.580 回答
4

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

在此处输入图像描述

于 2018-01-25T16:54:56.180 回答
2

根据如何显示 Maven POM 层次结构?看起来用一个简单的命令是不可能的。

您应该编写自己的插件或脚本来将层次结构爬到顶部并找到您感兴趣的工件。

小提示:要检索您正在使用的工件的版本,您可以在 Idea Editor 中打开 pom.xml,并在将鼠标悬停在artifactId 上时按住Ctrl,将显示其 pom 的全名及其版本。

于 2016-04-19T16:55:24.147 回答
1

有两件事。首先,dependency:tree 的输出打印出最终结果。这里的问题是你为什么不相信?如果您使用的是 BOM,为什么还要自己管理版本...

除此之外,您可以使用:

mvn help:effective-pom

如果你搜索得更好一点,你会看到下面的 pom 文件,其中包含这样的版本定义:

<hazelcast.version>3.5.5</hazelcast.version>
<hibernate.version>4.3.11.Final</hibernate.version>
<hibernate-validator.version>5.2.4.Final</hibernate-validator.version>
<hikaricp.version>2.4.3</hikaricp.version>
<hikaricp-java6.version>2.3.13</hikaricp-java6.version>
<hornetq.version>2.4.7.Final</hornetq.version> 

这正是依赖关系已经打印出来的版本:树。

于 2016-04-19T18:02:23.657 回答
0

My answer would be really similar to @Didier L. I was getting error due to the .xml file extension mvn org.apache.maven.plugins:maven-help-plugin:3.2.0:effective-pom -Dverbose=true -Doutput=effective-pom

于 2020-08-25T22:31:38.450 回答