我对ant脚本非常陌生,我想知道我的构建是否成功。我的主要目标有两个antcall,我不知道如何检查它们是否成功,以评估主要目标。
run all是我的主要目标
<target name="run all">
<antcall target="Run basic configuration" />
<antcall target="Run custom configuration"/>
我想为"全部运行"目标添加一个失败条件。每个目标都会单独检查它们是否成功,但我想知道调用蚂蚁的目标是否成功,以防这两个失败。此外,如果其中一个失败,另一个会被调用吗?
要确定antcall是否成功,需要更仔细地定义什么是成功。这可能意味着:
- 执行的代码没有引发异常
- 代码执行了您希望它执行的操作
在第一种情况下,您可以用trycatch块来封装ant调用的执行,以捕获异常。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>
在第二种情况下,您需要向调用者传递一些状态,指示代码执行了您希望它执行的操作
请注意,ant调用任务会重新加载ant文件(例如build.xml),因此这可能是一项昂贵的操作。有使用antcall任务的替代方案:
- 使用ant回调任务(ant contrib)。antcallback任务专门解决了传递回数据的需要
- 定义要调用依赖任务的目标时,请使用dependents属性
- 使用运行目标任务(ant contrib)。使用runtarget,将传递所有属性,并且调用方可以使用您在目标中设置的任何属性
- 使用宏定义任务。它避免了对ant文件的重新分析,可以传递具有默认值的属性,可以传递嵌套元素等等。因此,在大多数情况下,这是首选的解决方案
在上面的每种情况下,只需设置返回属性,您可以在调用目标中检查这些属性,以确定被调用或依赖目标是否执行了您期望的操作。