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

Continuous integration Maven命令行参数中的TeamCity双引号问题,continuous-integration,cucumber,teamcity,continuous-deployment,Continuous Integration,Cucumber,Teamcity,Continuous Deployment,我们有一个CICD流程,其中定义了一组始终为选通流程执行的TC。有时并不需要运行所有测试,相反,我们希望根据开发人员所做的更改只触发一组TC。我们的测试是基于cucumber的用户故事,因此我们可以通过标记控制测试运行。我的想法是从teamcity的maven命令行参数字段参数化cucumber.options,并让开发/支持人员根据需要定义标记 如果我提到命令行参数 -Dcucumber.options="--tags %env.test.scope%" 我的mavenized项目得到的值为

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

如果我提到命令行参数

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

我的mavenized项目得到的值为
cucumber.options=“--tags@Sanity
(假设env.test.scope的值为@Sanity)。如果您仔细注意,为什么我会得到开头的双引号?它会破坏我的TestRunner,并且不会触发任何测试。如果我删除双引号,那么我会得到mvn错误,因为@Sanity未被识别为有效目标(由于--tags和@之间存在空间问题)如何定义我的参数(cucumber.options)值以及其中的空间?

这似乎与JVM(要运行Maven)和-D有关,而与TeamCity无关。传递参数的正确方法是
“-Dcucumber.options=--tags%env.test.scope%”,因为它应该作为JVM的单个参数,然后用--tags%env.test.scope%”值解析为“cucumber.options”参数。

虽然我能够用@Yaegor answer解决这个问题,但我只是想知道JVM是如何解析这个值的,以及为什么遗漏了最后的双引号?