【问题标题】:Should maven-failsafe-plugin be executed in descendants of POM where it is specified?maven-failsafe-plugin 是否应该在指定的 POM 的后代中执行?
【发布时间】:2013-07-24 11:24:29
【问题描述】:

我已经指定在父 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>

【问题讨论】:

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


    【解决方案1】:

    首先你应该像这样在 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>
    

    您可以通过添加上述sn-p,在您想使用集成测试的每个子模块中单独激活使用。这通常只发生在少数几个模块中。

    【讨论】:

    • 嗨,如果你能在你的回答中澄清底部的 sn-p 需要在每个后代项目中复制,我很乐意接受。
    【解决方案2】:

    你需要添加目标integration-test

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

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

    目标 integration-test 实际运行测试,至少默认匹配 IT*.javaIT.javaITCase.java 的类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      • 2012-05-17
      • 2011-12-09
      相关资源
      最近更新 更多