【发布时间】:2018-05-01 02:51:24
【问题描述】:
在 TeamCity 工作中,我尝试从根 pom.xml 读取 Maven 项目版本,例如1.0.0-SNAPSHOT 并将内部版本号更改为1.0.0-N,其中N 是%build.counter% 的值。目标是用构建标识符替换 SNAPSHOT。
到目前为止,我尝试将build-helper:parse-version与exec:exec结合起来调用echo在构建日志中写入##teamcity[buildNumber '1.0.0-1']并更改构建号。
在我的工作站上,我可以执行以下 Maven 命令以在命令行中打印##teamcity 指令:
mvn build-helper:parse-version exec:exec \
-Dexec.executable="echo" \
-Dexec.args="##teamcity[buildNumber '${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}-%build.counter%']"
但是,当我在 TeamCity 构建中定义 Maven 步骤时,TeamCity 会直接从构建日志中打印的 Maven 命令行调用解析 ##teamcity 指令,从而导致以下 Maven 调用:
mvn build-helper:parse-version exec:exec \
-Dexec.executable="echo" \
-Dexec.args=""
以下由 TeamCity 完成:
##teamcity[buildNumber '${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}-11']
有没有办法在 Maven 命令行调用中转义包含 ##teamcity 的参数,以便 TeamCity 在 Maven 调用期间忽略它,但将其传递给 exec:exec Maven 目标以便它可以输出:
##teamcity[buildNumber '1.0.0-11']
如果有更简单的方法可以使用 TeamCity 构建步骤实现我的目标,并且无需修改项目的 pom.xml,请告诉我。我必须为此使用 PowerShell 或 Batch 脚本吗?
【问题讨论】: