获取多模块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
结果将是可见的,因为它绕过了日志框架。
我有一个多 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
结果将是可见的,因为它绕过了日志框架。