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

2022-09-03 12:12:31

我一起使用+,我想为maven-surefire-plugin的参数添加一些额外的值。maven-surefire-pluginSonarargLine

所以我做了:

<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>

但是在这种情况下,我覆盖了参数的原始值,并且Sonar不会生成jacoco.exec文件。argLine

我可以在 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。


答案 1

官方文件称这种延迟替换

如果您执行以下操作,您将覆盖之前由其他插件设置的参数值,因此请勿执行此操作: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>

或者,您可以在文件中设置为 a:argLinepropertypom.xml

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

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


答案 2

谢谢!

在我的情况下,它是:

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

推荐