Maven - 配置始终运行的后执行作业

时间:2012-03-26 15:57:38

标签: maven

在我的项目POM文件中,我需要配置后执行步骤。即在执行了测试单元测试后,执行后。 job将解析testng-xml-report并生成统计页面。报告生成将由一个单独的Jar完成。这个Jar将在POM的verify阶段调用。

但是目前的问题是,对于test阶段的测试成功情况,它将调用Jar并正常工作。对于失败案例,将生成xml报告,但由于test阶段失败,因此不会继续verify阶段。

那么有什么方法可以为Jar调用指定必须运行 maven-exec-plugin exec 目标,无论test阶段是否成功。

2 个答案:

答案 0 :(得分:2)

此方案的正确解决方案是不要使测试失败。测试应记录失败(例如在XML报告中),但跑步者必须向Maven返回“成功”。

对于Surefire,您可以使用-DtestFailureIgnore=true

实现此目的

编辑您可以将其放入POM中永久激活它。

但是如果你用不同的目标调用maven,结果可能是不合需要的。例如,对于mvn deploy,您可能希望在测试失败时停止进程。

要解决此问题,您有两种选择:

  1. 编写一个调用Maven的脚本,其中包含创建测试报告的必要选项
  2. 将选项移至profile
  3. [编辑] 有关选项#1的详细信息:您可以编写一个运行带有-DtestFailureIgnore=true的Maven的shell脚本来创建报告。

    然后,您需要一个可以找到XML报告并检查其中是否有任何错误的实用程序。如果您使用Java,请在发现错误时调用System.exit(1)。如果您更喜欢命令行,请使用XMLStarlet针对XML运行查询,使用find(1)之类的工具来查找XML文件。如果您需要帮助,请发布新问题。

    在shell脚本中使用util || exit 1在Maven之后调用此实用程序 - 如果实用程序发现错误,将停止使用错误代码1的shell脚本。

    使用此脚本构建而不是嵌入式Maven运行器。

答案 1 :(得分:0)

您可以使用mvn -fn clean install

-fn代表“永不失败”,即使某个细分失败,它也会一直持续。

有关更多选项,请参阅mvn -help