是否可以在 VSTS 构建计划或发布中提取 Maven 版本
Is it possible to extract the Maven Version within a VSTS Build Plan or Release
目前正在使用 VSTS 构建 Spring 使用 Maven 启动应用程序。试图弄清楚如何在构建和发布过程中 use/get Maven 版本。
可能吗?
这是一个脚本,它将获取 maven 的版本(给定路径)并将版本号存储在一个变量中,其他任务稍后可以在构建中使用。
$mvn = "$Env:M2_HOME\bin\mvn.bat"
$version = (& $mvn -v | select-string -pattern '(Apache\sMaven\s)([^\s]*)').Matches.Groups[2].Value
Write-Output ("##vso[task.setvariable variable=MavenVersion;]$version")
环境变量的名称是 MavenVersion,如您在最后一行中所见。您可以像在后续脚本或构建过程中使用任何其他环境变量一样使用此变量。
我在 Hosted Build 机器上测试了这个脚本,所以 Maven 的路径在 M2_HOME 下并以 .bat (Maven 2) 结尾。您可能想要添加更多代码以更通用地确定 Maven 的路径。
这是 python 中的脚本:
from xml.etree import ElementTree as ET
tree = ET.parse('pom.xml')
#print 'BuildNumber: ', BuildNumber
value =tree.find('./{http://maven.apache.org/POM/4.0.0}version')
print 'Found value:', value.text
print "##vso[task.setvariable variable=POM_VERSION;]", value.text
这 运行 在基于 linux 的构建代理上很好。输出变量是POM_VERSION
.
目前正在使用 VSTS 构建 Spring 使用 Maven 启动应用程序。试图弄清楚如何在构建和发布过程中 use/get Maven 版本。
可能吗?
这是一个脚本,它将获取 maven 的版本(给定路径)并将版本号存储在一个变量中,其他任务稍后可以在构建中使用。
$mvn = "$Env:M2_HOME\bin\mvn.bat"
$version = (& $mvn -v | select-string -pattern '(Apache\sMaven\s)([^\s]*)').Matches.Groups[2].Value
Write-Output ("##vso[task.setvariable variable=MavenVersion;]$version")
环境变量的名称是 MavenVersion,如您在最后一行中所见。您可以像在后续脚本或构建过程中使用任何其他环境变量一样使用此变量。
我在 Hosted Build 机器上测试了这个脚本,所以 Maven 的路径在 M2_HOME 下并以 .bat (Maven 2) 结尾。您可能想要添加更多代码以更通用地确定 Maven 的路径。
这是 python 中的脚本:
from xml.etree import ElementTree as ET
tree = ET.parse('pom.xml')
#print 'BuildNumber: ', BuildNumber
value =tree.find('./{http://maven.apache.org/POM/4.0.0}version')
print 'Found value:', value.text
print "##vso[task.setvariable variable=POM_VERSION;]", value.text
这 运行 在基于 linux 的构建代理上很好。输出变量是POM_VERSION
.