如何在Teamcity上为Maven设置多个属性
配置使用Maven runner的“附加Maven命令行参数”设置将属性传递给Maven。 这是通过如何在Teamcity上为Maven设置多个属性,maven,teamcity,maven-release-plugin,Maven,Teamcity,Maven Release Plugin,配置使用Maven runner的“附加Maven命令行参数”设置将属性传递给Maven。 这是通过-Darguments='完成的,因此maven发布插件可以在每次运行时使用参数来派生新进程 对于一个属性,配置为: -DsomeProp=%teamcity.agent.name% -Darguments='-DimportantProp=true' 问题是在传递多个属性时,例如: -DsomeProp=%teamcity.agent.name% -Darguments='-Dimportan
-Darguments='
完成的,因此maven发布插件可以在每次运行时使用参数来派生新进程
对于一个属性,配置为:
-DsomeProp=%teamcity.agent.name% -Darguments='-DimportantProp=true'
问题是在传递多个属性时,例如:
-DsomeProp=%teamcity.agent.name% -Darguments='-DimportantProp=true -DsecondProp=file_on_disk.name'
对于多属性配置,生成日志显示importantProp
被解析为true-dsecondrop=file\u on_disk.name
,这应该是一个无效值。
第二个属性secondProp
则不会应用,因为字符串会被importantProp
的值吸收
这样做的原因是为了简化TeamCity上的测试运行,而不是更改每个测试的POM。
我在TeamCity上几乎看不到这种配置的任何示例。您的道具不同于-dsecondrop=true
。因此,您应该只为要构建的过程创建一个道具。让我们命名mainProp
此外,我们需要添加新的道具,如果未选中,则该道具包含空道具;如果选中,则该道具包含-dsecondrop=true
。使用创建复选框参数additionalParam
- 选中值-
-dsecondrop=true
- 未选中的值-``(无)
现在我们需要将这个cb参数添加到mainProp中。
mainProp=-DsomeProp=%teamcity.agent.name%-Darguments='-DimportantProp=true%additionalParam%'
当您触发构建时,您可以选中复选框并传递-DsomeProp=%teamcity.agent.name%-Darguments='-DimportantProp=true-dsecondrop=true
您的道具不同于-dsecondrop=true
。因此,您应该只为要构建的过程创建一个道具。让我们命名mainProp
此外,我们需要添加新的道具,如果未选中,则该道具包含空道具;如果选中,则该道具包含-dsecondrop=true
。使用创建复选框参数additionalParam
- 选中值-
-dsecondrop=true
- 未选中的值-``(无)
现在我们需要将这个cb参数添加到mainProp中。
mainProp=-DsomeProp=%teamcity.agent.name%-Darguments='-DimportantProp=true%additionalParam%'
触发生成时,您可以选中复选框并传递-DsomeProp=%teamcity.agent.name%-Darguments='-DimportantProp=true-dsecondrop=true
将配置参数应用于配置两次已奏效。感谢高级波米多的配置参数建议
在生成参数或生成模板中创建配置参数%mavenArguments%
:
-DpropCheck=true -DpropPath=file_on_disk-1.path
然后在Maven构建步骤上的附加Maven命令行参数中应用提供的配置参数(直接作用于构建步骤或通过构建模板),如下所示:
%mavenArguments%
-Darguments='%mavenArguments%'
我仍然不知道为什么它不能通过直接写入附加Maven命令行参数来正确应用,但它最终起作用了。将配置参数应用于配置两次已经起作用了。感谢高级波米多的配置参数建议
在生成参数或生成模板中创建配置参数%mavenArguments%
:
-DpropCheck=true -DpropPath=file_on_disk-1.path
然后在Maven构建步骤上的附加Maven命令行参数中应用提供的配置参数(直接作用于构建步骤或通过构建模板),如下所示:
%mavenArguments%
-Darguments='%mavenArguments%'
我仍然不知道为什么它不能通过直接写入额外的Maven命令行参数来正确应用,但它最终还是起作用了。我会对它进行测试,但如果我没有弄错的话,它看起来最终会生成传递给Maven的相同字符串。我稍微澄清了一下这个示例,以表明第二个参数实际上是一个文件名。我尝试按照我在回答中所说的传递一个参数,结果传递正确。感谢这个想法,它帮助制定了一个可行的解决方案。我将在答案中发布完整的更改。我将对其进行测试,但如果我没有弄错的话,它看起来会生成最终传递给maven的相同字符串。我稍微澄清了一下这个示例,以表明第二个参数实际上是一个文件名。我尝试按照我在回答中所说的传递一个参数,结果传递正确。感谢这个想法,它帮助制定了一个可行的解决方案。我将在回答中发布完整的更改。