3

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

全部运行是我的主要目标

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

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

4

1 回答 1

2

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

  1. 执行的代码没有引发异常。
  2. 代码做了你想做的事。

在第一种情况下,您可以使用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 文件的重新解析,可以传递具有默认值的属性,可以传递嵌套元素等等。因此,这是大多数情况下的首选解决方案。

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

于 2013-02-12T16:18:35.933 回答