如何查找从 BOM 导入的 Maven 依赖版本声明
How to find a Maven dependency version declaration imported from a 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>
如何使用 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 -> 最后...
但这真是一场考验。当然,您可以检查 http://docs.spring.io/platform/docs/current/reference/htmlsingle/#appendix-dependency-versions 但是 Maven 不应该能够自己找到这些信息吗?
根据 How do I show the Maven POM hierarchy? 看来用简单的命令是不可能的。
您应该编写自己的插件或脚本来将层次结构爬到顶部并找到您感兴趣的工件。
小提示:要获取您正在使用的工件的版本,您可以在创意编辑器中打开pom.xml并按住 Ctrl 悬停在 artifactId 上时,将显示其 pom 的全名及其版本。
有两件事。首先 dependency:tree 的输出打印出最终结果是什么。这里的问题是你为什么不相信?如果您使用 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>
这正是 dependency:tree 打印出来的版本。
在 Eclipse 中,以 XML 格式查看 pom 时(即在 "pom.xml" 选项卡中,而不是 "Overview" 选项卡中),只需将鼠标光标放在工件名称上,然后将出现一个弹出窗口,其中包含有效版本及其定义位置。
mvn help:effective-pom -Dverbose=true 给出了 pom 的位置信息,其中一个条目进入有效的 pom 注释。
参考:http://maven.apache.org/plugins/maven-help-plugin/effective-pom-mojo.html
我试图使用 , but it didn't work for me because it was using maven-help-plugin:2.2, and -Dverbose
was introduced in 3.2.0 中的 mvn help:effective-pom -Dverbose
。
相反,您应该 force the version in the command line:
mvn org.apache.maven.plugins:maven-help-plugin:3.2.0:effective-pom -Dverbose=true -Doutput=effective-pom.xml
(最好使用-Doutput
,因为文件很大,不方便在终端中读取)
我的回答与@Didier L 非常相似。由于 .xml 文件扩展名 mvn org.apache.maven.plugins:maven-help-plugin:3.2.0:effective-pom -Dverbose=true -Doutput=effective-pom
,我遇到了错误
多模块父 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 -> 最后...
但这真是一场考验。当然,您可以检查 http://docs.spring.io/platform/docs/current/reference/htmlsingle/#appendix-dependency-versions 但是 Maven 不应该能够自己找到这些信息吗?
根据 How do I show the Maven POM hierarchy? 看来用简单的命令是不可能的。
您应该编写自己的插件或脚本来将层次结构爬到顶部并找到您感兴趣的工件。
小提示:要获取您正在使用的工件的版本,您可以在创意编辑器中打开pom.xml并按住 Ctrl 悬停在 artifactId 上时,将显示其 pom 的全名及其版本。
有两件事。首先 dependency:tree 的输出打印出最终结果是什么。这里的问题是你为什么不相信?如果您使用 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>
这正是 dependency:tree 打印出来的版本。
在 Eclipse 中,以 XML 格式查看 pom 时(即在 "pom.xml" 选项卡中,而不是 "Overview" 选项卡中),只需将鼠标光标放在工件名称上,然后将出现一个弹出窗口,其中包含有效版本及其定义位置。
mvn help:effective-pom -Dverbose=true 给出了 pom 的位置信息,其中一个条目进入有效的 pom 注释。 参考:http://maven.apache.org/plugins/maven-help-plugin/effective-pom-mojo.html
我试图使用 -Dverbose
was introduced in 3.2.0 中的 mvn help:effective-pom -Dverbose
。
相反,您应该 force the version in the command line:
mvn org.apache.maven.plugins:maven-help-plugin:3.2.0:effective-pom -Dverbose=true -Doutput=effective-pom.xml
(最好使用-Doutput
,因为文件很大,不方便在终端中读取)
我的回答与@Didier L 非常相似。由于 .xml 文件扩展名 mvn org.apache.maven.plugins:maven-help-plugin:3.2.0:effective-pom -Dverbose=true -Doutput=effective-pom