failsafe插件不会在一个项目上运行但会在另一个项目上运行 - 为什么?

时间:2012-03-30 17:28:57

标签: maven pom.xml maven-failsafe-plugin

这让我疯了。 Maven故障安全插件不会在我的项目上运行。如果我运行mvn verify,只能运行。如果我键入mvn failsafe:verify,则会失败,并显示以下错误:

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Simulation Experiment Server 1.0
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-failsafe-plugin:2.11:verify (default-cli) @ experiment-server ---
[INFO] Failsafe report directory: C:\IdeaProjects\experiment_server\target\failsafe-reports
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.551s
[INFO] Finished at: Fri Mar 30 11:24:58 GMT-06:00 2012
[INFO] Final Memory: 5M/15M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-failsafe-plugin:2.11:verify (default-cli) on project experiment-server: C:\IdeaProjects\experiment_server\target\failsafe-reports\failsafe-summary.xml (The system cannot find the path specified) -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

抱怨找不到failsafe-summary.xml。但这应该由插件创建。插件工作正常(并且如果我运行安东尼奥·贡卡尔维斯精彩Arquillian example project,则创建failsafe-summary.xml文件。

所以我复制了Antonio使用的确切插件信息,但它仍然无法在我的项目上运行。我已经将我的POM建模为与他完全一样(除了没有父母pom) - 一定是出错了,我只是不知道是什么。为什么故障保险会在他的项目上运行而不是我的项目?

这是我的故障安全pom.xml条目,它是从他的,并且与故障安全的网站上的那个相同):

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>${version.maven.failsafe.plugin}</version>
    <configuration>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>

感谢您的帮助,这让我感到疯狂。

更新好的,我似乎修复了cannot find failsafe-summary.xml问题 - 我将目录从experiment_server更改为experiment-server。我猜这会弄乱失败。

但是,我仍然无法通过命令mvn verifymvn integration-test运行故障安全。这两个命令都会调用surefire而不是failafe。我现在可以使用命令mvn failsafe:integration-test直接运行故障保护,但不应该使用mvn verify自动运行故障保护?我的mvn help:effective-pom表明故障安全存在,所以这不是问题......有什么想法吗?

4 个答案:

答案 0 :(得分:12)

默认情况下,请查看测试名failsafe的{​​{3}}:

<includes>
  <include>**/IT*.java</include>
  <include>**/*IT.java</include>
  <include>**/*ITCase.java</include>
</includes>

您的测试是否按照其中一种模式命名?如果没有,请尝试在插件配置中定义<includes>元素。或者更改您的测试名称以适合默认模式。


好的,现在我们已经验证了测试类名称 - 通常当我向插件配置添加执行时,我会这样做:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>${version.maven.failsafe.plugin}</version>
    <configuration>
    </configuration>
    <executions>
        <execution>
            <id>failsafe-integration-tests</id>
            <phase>integration-test</phase>
            <goals>
                <goal>integration-test</goal>
            </goals>
        </execution>
        <execution>
            <id>failsafe-verify</id>
            <phase>verify</phase>
            <goals>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>

这会明确地将您要运行的failsafe插件目标绑定到构建生命周期的正确阶段。我相信surefire插件默认绑定到test生命周期阶段(无论如何都是jar,war和ejb),但没有任何内容绑定到integration-test或{{1} }。

答案 1 :(得分:2)

在这里,我将分享我的2美分。我有同样的问题,上面的解决方案没有解决我的问题。

我将maven-failsafe-plugin封装在 pluginManagement 标记中。当我在4.0.0 maven架构中看到这个doc时,我注意到将它移到 plugins 标签中:

  

默认插件信息可供参考   从这一个衍生出来的项目。这个插件配置不会   除非被引用,否则应解析或绑定到生命周期。任何地方   给定插件的配置将覆盖插件的整个   在这里定义。

希望这个额外的信息。像我一样解决了更多人的问题。

答案 2 :(得分:1)

对我而言,只有在我添加了“默认”包含后才能使用。

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>2.15</version>
        <configuration>
            <includes>
                <include>**/IT*.java</include>
                <include>**/*IT.java</include>
                <include>**/*ITCase.java</include>
                <include>**/IntegrationTest*.java</include>
            </includes>
        </configuration>
        <executions>
            <execution>
                <id>failsafe-integration-tests</id>
                <phase>integration-test</phase>
                <goals>
                    <goal>integration-test</goal>
                </goals>
            </execution>
            <execution>
                <id>failsafe-verify</id>
                <phase>verify</phase>
                <goals>
                    <goal>verify</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

答案 3 :(得分:0)

如果您运行的是故障安全插件的2.12.2版本,这是正常的。切换到以前的版本。似乎2.13还没有。

Jira link