使用命令行更改 maven surefire reportsDirectory

the*_*rar 5 testing maven maven-surefire-plugin

我希望将生成的报告保存到我的每个测试套件的自定义位置(例如,../target/api/surefire-reports、../target/ui/surefire-reports)

我可以通过在 pom.xml 中添加以下行来做到这一点

<configuration>
  <reportsDirectory>${project.build.directory}/api/surefire-reports</reportsDirectory>

   <suiteXmlFiles>
     <suiteXmlFile>src/test/resources/api_testng.xml</suiteXmlFile>                        
   </suiteXmlFiles>
</configuration>
Run Code Online (Sandbox Code Playgroud)

但是,我想使用命令行,并且正在尝试这个:

mvn clean test -Dsurefire.suiteXmlFiles=src\\test\\resources\\api_testng.xml -DreportsDirectory=${project.build.directory}\\apitests\\surefire-reports
Run Code Online (Sandbox Code Playgroud)

但是,它不起作用并将报告保存在通常的 ../target/surefire-reports 文件夹中,并且也不会抛出任何错误。

这在 maven surefire 报告插件中很有可能,就像这样

mvn surefire-report:report -DoutputDirectory=newpath
Run Code Online (Sandbox Code Playgroud)

有谁知道或已经使用命令行选项在万无一失中做到这一点?

Ian*_*ips 0

该开关允许您从 CLI-D覆盖属性。因此,定义一个属性并将其用作 的值<reportsDirectory>,如下所示:

<properties>
    <surefireReportsDirectory/><!-- Empty means use the default value. -->
</properties>
...
<plugins>
...
<plugin>
    ...
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <reportsDirectory>${surefireReportsDirectory}</reportsDirectory>
    </configuration>
</plugin>
</plugins>
Run Code Online (Sandbox Code Playgroud)

现在您可以从 CLI 更改它:

mvn -DsurefireReportsDirectory=/some/other/dir test
Run Code Online (Sandbox Code Playgroud)