我在 Jenkins 有一份 Maven 工作。在实际构建步骤之前,我有一个“执行 shell”预构建步骤。在那个shell中我设置了一个变量:
REVISION=$(cat .build_revision)
我想在“目标和选项”的 Maven 构建作业中使用该变量:
clean install -Drevision=${REVISION}
但这不起作用!“Drevision”设置为“${REVISION}”,而不是 ${REVISION} 的实际值。输出:
Executing Maven: -B -f /home/gerrit/.jenkins/jobs/<job_name>/workspace/pom.xml clean install -Drevision=${REVISION}
它适用于 Jenkins 环境变量:
clean install -Dbuild=${BUILD_NUMBER}
它将“Dbuild”设置为实际的内部版本号。输出:
Executing Maven: -B -f /home/gerrit/.jenkins/jobs/<job_name>/workspace/pom.xml clean install -Dbuild=54
我的问题:如何在 Maven“目标和选项”中使用 shell 变量?
编辑:
我尝试在预构建 shell 之后使用Jenkins EnvInject 插件来“注入环境变量”,现在我的变量可以通过构建后的 shell 访问,但它在 Maven“目标和选项”中仍然不可用。
然后可以使用 EnvInject 插件设置“将环境变量注入构建过程”,这实际上使这些变量在 Maven“目标和选项”中可用,但这些变量是在 SCM 签出之后立即设置的,即在预构建步骤之前,并且不支持表达式评估。