如何在 Teamcity 上为 Maven 设置多个属性

How to set multiple properties for Maven on Teamcity

配置使用 Maven 运行ner 的 "Additional Maven command line parameters" 设置将 属性 传递给 Maven。 这是通过 -Darguments='' 完成的,因此 maven-release-plugin 可以在每个 运行 上使用参数,因为它会分叉新进程。

对于一个 属性 配置是:

-DsomeProp=%teamcity.agent.name% -Darguments='-DimportantProp=true'

问题是在像这样传递多个属性时:

-DsomeProp=%teamcity.agent.name% -Darguments='-DimportantProp=true -DsecondProp=file_on_disk.name'

对于多属性配置,构建日志显示 importantProp 被解析为 true -Dsecondprop=file_on_disk.name,这应该是一个无效值。 然后不应用第二个 属性 secondProp,因为字符串被吸收到 importantProp.

的值中

这样做的原因是为了简化 TeamCity 上的测试 运行,而不是为每个测试更改 poms。 我在 TeamCity 上几乎看不到此配置的任何示例。

您的道具相差 -DsecondProp=true。因此,您应该只为构建通行证创建一个道具。让我们命名 mainProp

此外,我们需要添加新属性,如果未选中则为空,如果选中则为 -DsecondProp=true。使用

创建复选框参数 additionalParam
  • 检查值 - -DsecondProp=true
  • 未检查的值 - ``(无)

现在我们需要将这个 cb 参数添加到我们的 mainProp 中。 mainProp = -DsomeProp=%teamcity.agent.name% -Darguments='-DimportantProp=true %additionalParam%'

当您触发构建时,您可以选中复选框并传递 -DsomeProp=%teamcity.agent.name% -Darguments='-DimportantProp=true -DsecondProp=true

将配置参数应用于配置两次已成功。感谢Pomidor前辈的配置参数建议

在构建参数或构建模板中创建配置参数%mavenArguments%:

-DpropCheck=true -DpropPath=file_on_disk-1.path

然后在 Additional Maven command line parameters 的 Maven 构建步骤中应用提供的配置参数(直接在构建步骤或通过构建模板工作),如下所示:

%mavenArguments%
-Darguments='%mavenArguments%'

我仍然不知道为什么不能通过直接写入 Additional Maven command line parameters 来正确应用它,但它终于起作用了。