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

时间:2016-04-19 15:36:13

标签: maven maven-bom

多模块父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>

如何定义有效Hibernate版本的Maven命令行或IntelliJ?

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

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

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

  • platform-bom-2.0.3.RELEASE.pom开始,搜索Hibernate - &gt;没什么
  • 转到其父spring-boot-starter-parent-1.3.3.RELEASE.pom,搜索Hibernate - &gt;没什么
  • 转到spring-boot-dependencies-1.3.3.RELEASE.pom,搜索Hibernate - &gt;终于......

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

6 个答案:

答案 0 :(得分:2)

在Eclipse中,当以XML格式查看pom时(即在&#34; pom.xml&#34;选项卡中,而不是&#34; Overview&#34;选项卡),只需将鼠标光标放在工件上将显示名称和弹出窗口,其中包含有效版本及其定义位置。

enter image description here

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

除此之外,你可以使用:

mvn help:effective-pom

如果你搜索得比你更好,那么你会来到包含这样的版本定义的following pom file

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

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

答案 3 :(得分:0)

根据How do I show the Maven POM hierarchy?,看起来似乎不可能通过一个简单的命令。

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

小提示:要检索您正在使用的工件的版本,您可以在构思编辑器中打开pom.xml并按住 Ctrl em>悬停在 artifactId上,将显示其pom的全名及其版本。

答案 4 :(得分:0)

我尝试使用this other answer中的pygame.event.pump(),但是对我来说不起作用,因为它使用的是maven-help-plugin:2.2和-Dverbose was introduced in 3.2.0

因此,您应该force the version in the command line

import pygame

pygame.display.init()
pygame.joystick.init()
pygame.joystick.Joystick(0).init()

# Prints the joystick's name
JoyName = pygame.joystick.Joystick(0).get_name()
print "Name of the joystick:"
print JoyName
# Gets the number of axes
JoyAx = pygame.joystick.Joystick(0).get_numaxes()
print "Number of axis:"
print JoyAx

# Prints the values for axis0
while True:
        pygame.event.pump()
        print pygame.joystick.Joystick(0).get_axis(0)

(最好使用mvn help:effective-pom -Dverbose,因为文件可能很大,并且在终端中读取它不方便)

答案 5 :(得分:0)

我的答案与@Didier L非常相似。由于.xml文件扩展名mvn org.apache.maven.plugins:maven-help-plugin:3.2.0:effective-pom -Dverbose=true -Doutput=effective-pom

,我遇到了错误