有没有办法检查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."/>
答案 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>