获取多模块maven项目中特定模块的版本

Get version of specific module in multi module maven project

我有一个多 Maven 模块项目。我需要检索模块的当前版本。

Parent Pom (2.4.0)
|- module1 1.5.0
|- module2 1.3.4
|- module3 1.2.5

获取 module2 的版本将 return 1.3.4.

仅供参考:module1 可能是 module2 的依赖项。

找到一种方法是

mvn depedency:tree -X |  awk '/module1/ {split([=11=], a, ":"); if (a[4]) {print a[4]; exit}}'

希望采用更简洁的方式。

有几个解决方案,但它们都基于相同的逻辑:

mvn -f model2 org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=project.version -q -DforceStdout

使用 -f model2-f model2/pom.xml 指定 pom.xml

的路径

使用 org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate 调用 maven-help-plugin 的 evaluate goal。如果 pom 在这个插件上已经有一个锁定版本,你可以简单地使用 help:evaluate

使用 -Dexpression=project.version 指定您想知道的内容。如果它以项目开头,您将遵循 pom 的 xml 结构。

使用 -q 可以抑制由 Maven 的日志框架处理的输出日志记录。

但这也会抑制评估目标的结果。因此,通过使用 -DforceStdout 结果将是可见的,因为它绕过了日志框架。