Maven从命令行调用maven插件目标

时间:2016-02-19 22:41:35

标签: java maven maven-surefire-plugin

您能告诉我如何使用以下配置在命令行中调用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”。

那么如何在命令行中实现这一目标呢?

1 个答案:

答案 0 :(得分:1)

回顾一下你的情况。您在构建期间生成了多个版本的源代码,每个版本最终都位于target下的单独文件夹中。对于每个版本,您都希望使用maven-surefire-plugin执行单元测试。我们将基本目录视为target/generated/classes。这意味着每个版本都有多个子目录target/generated/classes/version1target/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>