gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:03:55 25 4
gpt4 key购买 nike

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

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

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

最佳答案

这种情况的正确解决方案是不要让测试失败。测试应记录失败(例如在 XML 报告中),但运行器必须向 Maven 返回“成功”。

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

实现此目的

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

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

要解决这个问题,您有两个选择:

  1. 编写一个调用 Maven 的脚本,使用必要的选项来创建测试报告
  2. 将选项移动到 profile

[编辑] 关于选项 #1 的详细信息:您可以编写一个 shell 脚本,使用 -DtestFailureIgnore=true 运行 Maven 来创建报告。

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

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

使用此脚本代替嵌入式 Maven 运行程序进行构建。

关于Maven - 配置始终运行的执行后作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9875481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com