在maven-surefire-plugin中附加argLine参数的值

e7arh2l6  于 2022-11-22  发布在  Maven
关注(0)|答案(3)|浏览(844)

我正在一起使用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 param的值为-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,但没有覆盖它的值。
APPEND此参数的原始值的正确方法是什么(保留原始值+添加额外值)?
我使用的是Apache Maven 3.5.0,Java版本:1.8.0_131,厂商:甲骨文公司。

o2gm4chl

o2gm4chl1#

官方文件称之为迟交。
如果您执行以下操作,将会覆盖之前由其他插件设置的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>

或者,您可以在pom.xml文件中将argLine设置为property

<properties>
    <argLine>-DCRR.Webservice.isSimulated=true -D...</argLine>
</properties>

上述两种解决方案都能正常工作。

41ik7eoe

41ik7eoe2#

谢谢你!
在我的情况下,它是:

<argLine>${tycho.testArgLine} -D...</argLine>
ajsxfq5m

ajsxfq5m3#

针对Apache Maven 3.8.3更新

在我的例子中,只有两个@zapee建议的组合才有效,换句话说,重要的是将<argLine/>添加到<properties>,将@{argLine}添加到配置部分。

<properties>
  <!--  This is required for later correct replacement of argline -->
  <argLine/>
</properties>
...
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <argLine>@{argLine} -D... -D...</argLine> 
  </configuration>
</plugin>

希望,它能帮助一些人。

相关问题