2011-05-20 49 views
5

有没有什么办法可以检查蚂蚁是否在某处定义了具有特定refid的参考?用蚂蚁检查参考

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

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

我需要做的是,因为在我的项目有这不是我的控制下(实际上,我不允许有时审视自己的内容)的一些构建脚本。

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

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

有没有办法做到这一点?

更新:

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

例如:

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

回答

3

您可以设置基础上,value of a reference的属性,然后测试该属性。例如:

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

不幸这是行不通的。当my.ref未设置时,$ {toString:my.ref}的计算结果为“$ {toString:my.ref}”值。 – Ken 2011-05-20 09:28:17

+0

@Ken - 所以如果您在属性中找到该值,则知道引用未定义。 – 2011-05-20 09:35:43

+0

确实:-)谢谢! – Ken 2011-05-20 10:09:07

0

,以确保它与所有类型的引用是更好的作品使用$ {ant.refid:引用冲,见Ant Manual,虽然它与$ {工作的toString:参考}在大多数情况下。

随着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也已经控制像时,除非同时,对选择,开关结构..

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

see Flaka Manual