【问题标题】:Append the value of argLine param in maven-surefire-plugin在 maven-surefire-plugin 中附加 argLine 参数的值
【发布时间】:2017-09-29 13:05:33
【问题描述】:

我正在同时使用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。

【问题讨论】:

    标签: java maven maven-3 maven-surefire-plugin


    【解决方案1】:

    官方文档称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>
    

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

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

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

    【讨论】:

    • 我没有看到您的解决方案中的“追加原始值”在哪里
    • 这就是附加该值的方式。将 argLine 定义为属性,而不是直接添加到插件中。
    • 当我阅读“APPEND”时,我希望在一个地方“-Dfoo=bar”在第二个地方“-Dalpha=beta”,并且有一种方法可以获得“-Dfoo=bar -Dalpha=贝塔”。您描述了如何替换,而不是如何追加。此外,您还写了“不要在 标签之间定义 argLine:”。为什么不?用户属性“argLine”在插件属性“argLine”之前。也许您的答案是正确的,但请提供具体示例:jacoco 的默认配置以及如何添加“一些额外价值”并保留 jacoco 设置的解决方案。我现在看到的只是将“argLine”从插件配置移动到构建属性。
    • 这是一个 APPEND。你检查过官方文档吗?它说:“后期更换”。 maven.apache.org/surefire/maven-surefire-plugin/…
    • 我很困惑,也许我误解了什么。你能提高答案的可读性吗?例如,一个段落以“Do not define argLine ..”开头,下面是带有“...”的sn-p。 sn-p 是正面还是反面的例子?我认为最好的解决方案是更具体的答案,使用示例 jacoco 设置和增加额外价值的方法。此外,您在评论中提到“后期替换”,但您的回答未使用语法 @{}
    【解决方案2】:

    谢谢!

    在我的情况下是:

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

    【讨论】:

      猜你喜欢
      • 2016-07-15
      • 1970-01-01
      • 2016-12-14
      • 2022-07-14
      • 2012-11-29
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      相关资源
      最近更新 更多