maven-failsafe-plugin应该在POM的后代执行吗?

时间:2013-07-24 11:24:29

标签: java maven integration-testing maven-failsafe-plugin

我已在父POM中指定使用Failsafe。当我在我的多模块版本上运行mvn verify时,没有任何Failsafe运行的提示 - 它在控制台输出中无处可见。

如果我将相同的<plugin>定义添加到子POM中,它会运行(尽管它抱怨无法找到\failsafe-reports\failsafe-summary.xml)。

当然应该继承哪些插件要运行?

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.15</version>
    <executions>
        <execution>
            <goals>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>

2 个答案:

答案 0 :(得分:2)

首先,您应该在pluginManagement中定义它,如下所示:

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>2.15</version>
          <executions>
            <execution>
              <id>integration-test</id>
              <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

重要的是使用目标integration-testverify,而不仅仅是verify。从上面的Aaprt你需要定义这样的实际用法:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

您可以通过添加上述代码段,在要使用集成测试的每个子模块中单独激活使用情况。这通常仅在几个模块中。

答案 1 :(得分:0)

您需要添加目标integration-test

              <goals>
                 <goal>integration-test</goal>
                 <goal>verify</goal>
              </goals>

目标验证,只检查生成的报告(failsafe-summary.xml)以查看是否存在测试错误,并使构建失败。

目标集成测试实际上运行测试,默认情况下至少匹配IT*.javaIT.javaITCase.java的类。