java – 无条件地在ant中执行任务?

前端之家收集整理的这篇文章主要介绍了java – 无条件地在ant中执行任务?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试定义在目标完成执行时发出(使用echo)消息的任务,无论该目标是否成功.具体来说,目标执行一个任务来运行一些单元测试,我想发出一条消息,指出结果的可用位置:
<target name="mytarget">
  <testng outputDir="${results}" ...>
    ...
  </testng>
  <echo>Tests complete.  Results available in ${results}</echo>
</target>

不幸的是,如果测试失败,则任务失败并且执行中止.因此,只有在测试通过时才输出消息 – 与我想要的相反.我知道我可以将任务放在任务之前,但这会让用户更容易错过这条消息.我正在尝试做什么?

更新:事实证明我是愚蠢的.我的< testng>中有haltOnFailure =“true”任务,这解释了我所看到的行为.现在的问题是,将此设置为false会导致整个ant构建成功,即使测试失败,这也不是我想要的.以下使用该任务的答案看起来可能是我想要的……

解决方法

您的问题的解决方案是将failureProperty与testng任务的haltOnFailure属性一起使用,如下所示:
<target name="mytarget">
  <testng outputDir="${results}" failureProperty="tests.Failed" haltOnFailure="false" ...>
    ...
  </testng>
  <echo>Tests complete.  Results available in ${results}</echo>
</target>

然后,在其他地方,当您希望构建失败时,添加如下所示的ant代码

<target name="doSomethingIfTestsWereSuccessful" unless="tests.Failed">
   ...
</target>

<target name="doSomethingIfTestsFailed" if="tests.Failed">
   ...
   <fail message="Tests Failed" />
</target>

然后,您可以在您希望您的ant构建失败的地方调用doSomethingIfTestsFailed.

猜你在找的Java相关文章