我有2个配置文件,这些配置文件可以一起使用或可以不一起运行一组测试。它们每个都需要不同的vmargs来运行,但是如果将它们一起使用,可以将它们彼此附加在一起。
我正在寻找的是一种将argLine设置为其当前值加上我设置的值的串联方式。
我希望它会像
<argLine>${argLine} -DnewVMArg</argLine>
我可以做些类似的事情来做到这一点吗?
我试图对其进行修复,这导致Maven陷入了递归循环。它记录在下面。
我最近的尝试是全局定义属性
<my.argLines></my.argLines>
,然后在配置文件中进行修改。在每个概要文件的一个属性块中,我将覆盖属性设置为:
<my.argLines>${my.argLines} -myUniqueToProfileArgs</my.argLines>
在配置文件的每个surefire配置中,我将
<argLines>
设置为:<argLines>${my.argLines}</argLines>
这在逻辑上适合我,但是它的评估方式显然不会啮合。
最佳答案
在-DnewVMArg
内定义默认参数argLine
,如下所示:
<properties>
<customArg/>
<argLine>${customArg} -DnewVMArg</argLine>
</properties>
定义配置文件参数
<profiles>
<profile>
<id>profile1</id>
<properties>
<customArg>-DmyUniqueToProfile1Args</customArg>
</properties>
</profile>
<profile>
<id>profile2</id>
<properties>
<customArg>-DmyUniqueToProfile2Args</customArg>
</properties>
</profile>
</profiles>
不需要其他插件配置
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration/>
</plugin>
....
我已经测试了此配置,结果如下。
默认
mvn surefire:test -X
结果
(...)java -jar -DnewVMArg (...)
设定目标
mvn surefire:test -X -Pprofile1
结果
(...)java -DmyUniqueToProfile1Args -DnewVMArg -jar (...)