我一起使用maven-surefire-plugin
+ Sonar
,我想为maven-surefire-plugin的argLine
参数添加一些额外的值。
所以我做到了:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
<configuration>
<argLine>-DCRR.Webservice.isSimulated=true -D...</argLine>
</configuration>
</plugin>
...
</plugins>
</build>
但是在这种情况下,我将覆盖
argLine
参数的原始值,而Sonar不会生成jacoco.exec文件。我可以在Maven调试日志(-X)中看到argLine参数的值未覆盖它的值是
-javaagent:/opt/jenkins/.../myproject-SONAR/.repository/org/jacoco/org.jacoco.agent/0.7.4.201502262128/org.jacoco.agent-0.7.4.201502262128-runtime.jar=destfile=/opt/jenkins/.../myproject-SONAR/target/jacoco.exec
。追加此参数原始值的正确方法是什么(保留原始值+添加其他值)?
我正在使用Apache Maven 3.5.0,Java版本:1.8.0_131,供应商:Oracle Corporation。
最佳答案
官方文档将其称为late replacement。
如果执行以下操作,您将覆盖以前由其他插件设置的argLine
参数的值,因此不要这样做:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>-D... -D...</argLine>
</configuration>
</plugin>
保留现有值和添加配置的正确方法是使用
@{...}
语法:<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>@{argLine} -D... -D...</argLine>
</configuration>
</plugin>
或者,您可以在
argLine
文件中将property
设置为pom.xml
:<properties>
<argLine>-DCRR.Webservice.isSimulated=true -D...</argLine>
</properties>
上面的两种解决方案都可以正常工作。
关于java - 在maven-surefire-plugin中附加argLine参数的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46489455/