检查两个antcall是否成功

时间:2013-02-12 14:38:54

标签: ant

我对ant脚本非常陌生,我想知道我的构建是否成功。我的主要目标有两个antcalls,我不知道如何检查它们是否成功,以评估主要目标。

运行all是我的主要目标

<target name="run all">
<antcall target="Run basic configuration" />
<antcall target="Run custom configuration"/>

我想为“全部运行”目标添加失败条件。 每个目标都会单独检查它们是否成功,但我想知道调用ant的目标是否不成功,以防这两个目标失败。 另外,如果一个失败,另一个会被调用吗?

1 个答案:

答案 0 :(得分:2)

要确定antcall是否成功,需要更仔细地定义成功是什么。它可能意味着:

  1. 执行的代码没有抛出异常。
  2. 代码完成了你想要它做的事。
  3. 在第一种情况下,您可以使用 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任务专门解决了传回数据的需要。
    • 在定义要调用相关任务的目标时,使用依赖属性。
    • 使用 runtarget 任务(ant-contrib)。使用runtarget,您的所有属性都会被传递,并且您在目标中设置的任何属性都可供调用者使用。
    • 使用 macrodef 任务。它避免了重新分析ant文件,可以使用默认值传递属性,可以传递嵌套元素等等。因此,在大多数情况下,这是首选解决方案。

    在上述每种情况下,只需设置您可以在调用目标中检查的返回属性,以确定被调用目标或从属目标是否符合您的预期。