在我的项目POM文件中,我需要配置一个后执行步骤。也就是说,在运行testng单元测试之后,post exec。作业将解析testng-xml-报告,并生成一个统计页面。报告生成将由一个单独的Jar完成。此Jar将在POM的verify阶段调用。
但当前的问题是,对于test阶段的测试成功场景,它将调用Jar并正常工作。对于一个失败案例,将生成xml,但是由于test阶段失败了,所以它不会继续到verify阶段。
因此,我是否可以指定一个maven-exec-plugin's必须运行的案例,即Jar调用的目标,而不管test阶段是否成功。
发布于 2012-03-26 16:03:03
此方案的正确解决方案是不通过测试。测试应该记录失败(例如,在XML报告中),但是运行程序必须将“成功”返回给Maven。
对于万无一失,您可以使用-DtestFailureIgnore=true实现这一点。
编辑您可以将其放入POM中以永久激活它。
但是,如果您用不同的目标调用maven,结果可能是不可取的。例如,对于mvn deploy,您可能希望在出现测试失败时进程停止。
要解决这个问题,您有两个选项:
编辑关于选项1的详细信息:您可以编写一个使用-DtestFailureIgnore=true运行Maven的shell脚本来创建报告。
然后,您需要一个实用程序来定位XML报告并检查其中是否有任何错误。如果为此使用Java,如果发现错误,请调用System.exit(1)。如果您希望使用命令行,可以使用XMLStarlet对XML运行查询,并使用像find(1)这样的工具来定位XML文件。如果你需要帮助的话,就发布新的问题。
使用util || exit 1在shell脚本中的Maven之后调用此实用程序--如果该实用程序发现错误,它将停止使用1错误代码的shell脚本。
使用此脚本来构建,而不是使用嵌入式Maven运行程序。
发布于 2012-03-26 16:01:49
您可以使用mvn -fn clean install
-fn代表“永不失败”,即使某一段失败了,它也将永远继续下去。
更多选项请参见mvn -help
https://stackoverflow.com/questions/9875481
复制相似问题