我正在与 Jenkins 一起开发一个多模块 maven 项目。我有一个构建作业,我想用唯一的版本号打包我的项目并将其部署到 Nexus。
版本号应该是 - 其中“maven-version”是根 POM 中维护的版本,“build-number”是 Jenkins 的作业构建号。例如:1.2.3-1234
我正在使用 maven-versions-plugin 设置所需的版本号,但我有一个问题,我想在 POM 中维护版本的第一部分(1.2.3)。所以我需要一种方法将 POM 中的版本提取到 Jenkins 环境变量中。
到目前为止,我还没有找到这样做的直接方法。我的解决方案是使用一个 groovy 脚本来解析 POM 并将版本号写入临时属性文件。之后,我使用EnvInject插件创建环境变量,以便以后重新注入作为“mvn 版本:set”命令的版本号。
我的常规脚本:
import jenkins.util.*;
def project = new XmlSlurper().parse(new File("pom.xml"))
def version = project.version.toString();
def mainversion = version.substring(0, version.indexOf("-SNAPSHOT"));
println "Version: $mainversion";
def versionFile = new File("v.properties");
versionFile << "VERSION=$mainversion";
通过属性文件的这种间接方式非常难看并且容易出错。有什么方法可以直接在 groovy 脚本中创建环境变量?可以使用系统 groovy 脚本,但这类脚本总是在主服务器上执行。因此,我的工作将无法在对我不起作用的从属设备上运行,因为我不在主设备上执行构建。