用ant检查引用

时间:2011-05-20 09:07:48

标签: ant

有没有办法检查ant是否在某处定义了具有特定refid的引用?

例如,我需要在使用之前检查my.ref是否已定义,如下所示。

<pathconvert property="my.prop" refid="my.ref">
...
</pathconvert>

我需要这样做,因为在我的项目中有一些不受我控制的构建脚本(实际上,我不允许有时检查它们的内容)。

这些脚本应该定义此引用。不幸的是,由于某种原因,我不能指望这个引用是定义的。

因此,我需要检查它并执行优雅的错误处理或一些特定的操作。

有什么办法吗?

更新

我找到了自己做的正确方法。 可以使用isreference任务的condition元素来完成。

例如:

<condition property="my.ref.defined">
    <isreference refid="my.ref"/>
</condition>
<fail unless="my.ref.defined" message="Reference my.ref not defined."/>

2 个答案:

答案 0 :(得分:3)

您可以根据value of a reference设置属性,然后测试该属性。例如:

<property name="my.prop" value="${toString:my.ref}" />

答案 1 :(得分:0)

为了确保它适用于所有类型的引用,最好使用$ {ant.refid:reference},请参阅Ant Manual,尽管在大多数情况下它适用于$ {toString:reference}。

使用Ant Plugin Flaka,这是一个单行=

 <project name="demo" xmlns:fl="antlib:it.haefelinger.flaka">
  <fl:fail message="Houston we have a problem" test="not has.property['ant.refid:my.ref']"/>

Flaka也有控制结构,比如when,除非,for,for,choose,switch ..

 <fl:when test="not has.property['ant.refid:my.ref']">
  ...
 </fl:when>

see Flaka Manual