您能告诉我如何使用以下配置在命令行中调用maven surefire吗?
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<id>Custom tests</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<classesDirectory>target/generated/classes/normalCase/</classesDirectory>
<reportsDirectory>target/generated/reports/normalCase/</reportsDirectory>
</configuration>
</execution>
</executions>
</plugin>
当在我的pom.xml中定义了这样的surefire并且我执行阶段测试时,它正是我想要它的工作方式:它试图对位于target / generated / classes / normalCase中的类运行我的测试。
所以我尝试了这个命令行:
mvn surefire:test -DclassesDirectory="target/generated/classes/normalCase/"
但不,它会继续检查默认值目录中的类,即“target / classes”。
那么如何在命令行中实现这一目标呢?
答案 0 :(得分:1)
回顾一下你的情况。您在构建期间生成了多个版本的源代码,每个版本最终都位于target
下的单独文件夹中。对于每个版本,您都希望使用maven-surefire-plugin
执行单元测试。我们将基本目录视为target/generated/classes
。这意味着每个版本都有多个子目录target/generated/classes/version1
,target/generated/classes/version2
....
一种可能的解决方案是使用iterator-maven-plugin
迭代all subdirectories of a folder并从所有这些子目录中调用maven-surefire-plugin
。变量@item@
保存当前项目。
<plugin>
<groupId>com.soebes.maven.plugins</groupId>
<artifactId>iterator-maven-plugin</artifactId>
<version>0.3</version>
<executions>
<execution>
<id>iterate</id>
<phase>test</phase>
<goals>
<goal>iterator</goal>
</goals>
<configuration>
<folder>target/generated/classes</folder>
<pluginExecutors>
<pluginExecutor>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
</plugin>
<goal>test</goal>
<configuration>
<classesDirectory>target/generated/classes/@item@</classesDirectory>
<reportsDirectory>target/generated/reports/@item@</reportsDirectory>
</configuration>
</pluginExecutor>
</pluginExecutors>
</configuration>
</execution>
</executions>
</plugin>