要确定 antcall 是否成功,需要更仔细地定义什么是成功。这可能意味着:
- 执行的代码没有引发异常。
- 代码做了你想做的事。
在第一种情况下,您可以使用trycatch块包装 antcall 的执行以捕获异常。trycatch任务是 ant-contrib 的一部分,但它在 Ant 编码中经常使用。你会这样做:
<trycatch property="exception.message" reference="exception.object">
<try>
<antcall target="targetName"/>
</try>
<catch>
<!-- handle exception logic here -->
</catch>
<finally>
<!-- do any final cleanup -->
</finally>
</trycatch>
在第二种情况下,您需要将一些状态传递回调用者,该状态表明代码执行了您希望它执行的操作。
请注意,antcall 任务会重新加载 ant 文件(例如 build.xml),因此它可能是一项昂贵的操作。使用 antcall 任务还有其他选择:
- 使用antcallback任务 (ant-contrib)。antcallback任务专门解决了传回数据的需要。
- 在定义目标以调用依赖任务时使用depends属性。
- 使用runtarget任务 (ant-contrib)。使用 runtarget,您的所有属性都会被传递,并且您在目标中设置的任何属性都可供调用者使用。
- 使用宏定义任务。它避免了对 ant 文件的重新解析,可以传递具有默认值的属性,可以传递嵌套元素等等。因此,这是大多数情况下的首选解决方案。
在上述每种情况下,只需设置可以在调用目标中检查的返回属性,以确定被调用目标或依赖目标是否按照您的预期执行。