Maven:没有应用儿童pom的argline?

时间:2018-03-07 13:13:51

标签: maven maven-failsafe-plugin

我有一个多模块maven项目。在子模块中,failsafe插件用于集成测试运行。一些argLines是相应定义的:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <configuration>
        <skipAfterFailureCount>1</skipAfterFailureCount>
        <argLine>-Xmx2048M -Xss512M -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC</argLine>
    </configuration>
</plugin>

问题是当我以mvn testmvn integration-test运行测试时,arglines既不应用于父pom目录也不应用于子pom目录,但如果我运行测试如同两个目录中的mvn failsafe:integration-test,则应用arglines参数。

这背后的原因是什么?当我使用mvn test命令运行测试时,有没有办法应用这些参数?我试图通过命令行传递参数mvn test -Dchild.argline="-Xmx2048M -Xss512M -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC"

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <configuration>
        <skipAfterFailureCount>1</skipAfterFailureCount>
        <argLine>${child.argline}</argLine>
    </configuration>
</plugin> 

但它没有用。

此外,我尝试将测试和集成测试阶段绑定到故障安全集成测试和定义的配置参数,但它也没有工作..

我相应地设置了MAVEN_OPTS,但它没有帮助......

1 个答案:

答案 0 :(得分:0)

默认情况下,failsafe插件目标不包含在生命周期中。 POM配置必须包含它。有关示例,请参阅this SO answer。还要确保插件定义位于<plugins>部分,而不是<pluginManagement>元素内。

至于如何在POM中定义选项 - 使用documentation中提供的名称。因此,要指定argLine,请添加

<argLine>...</argLine>

在插件配置中。要在命令行中指定,请注意&#34;用户属性&#34;为您要设置的值。对于故障安全插件argLine,用户属性也是argLine,因此在命令行中指定

-DargLine=...

Maven对child.argline一无所知,所以默默地忽略它。另请注意,属性和用户属性名称区分大小写。