Maven 命令行参数中的 TeamCity 双引号问题

TeamCity double quote issue in Maven Command Line parameter

我们有一个 CICD 流程,其中定义的一组 TC 总是为门控流程执行。有时不需要 运行 所有测试,相反我们只想根据开发人员所做的更改触发一组 TC。我们的测试是基于黄瓜的用户故事,因此我们可以通过标签控制测试 运行。我的想法是从 teamcity 的 maven 命令行参数字段参数化 cucumber.options 并让 Dev/support 人们根据需要定义标签。

如果我提到命令行参数

-Dcucumber.options="--tags %env.test.scope%"

我的 mavenized 项目获得的值为 cucumber.options = "--tags @Sanity(假设 env.test.scope 值为 @Sanity)。如果您仔细注意这里,为什么我要打开双引号?它破坏了我的 TestRunner 并触发了 none 个测试。如果我删除双引号,那么我会收到 mvn 错误,因为 @Sanity 未被识别为有效目标(因为 --tags 和 @ 之间的 space 问题)如何定义我的参数 (cucumber.options) 值space在里面吗?

与 TeamCity 相比,这似乎与 JVM(与 运行 Maven)和 -D 更相关。传递参数的正确方法是 “-Dcucumber.options=--tags %env.test.scope%” 因为它应该作为 JVM 的单个参数获取,然后使用“--tags %[=14=”解析为 "cucumber.options" 参数]%" 值。