2011-11-10 46 views
34

如何使用Ant检查属性的存在?如何检查物业是否存在?

如果Ant没有提供类似的东西,我可以使用ant-contrib

此外,ant-contrib有断言的任务,它提供exists,但断言不是我在这里需要,因为我宁愿布尔返回值。

+1

\t \t \t <等于ARG1 = “$ {myprop}” ARG2 = “$$ {myprop}”/> \t \t \t \t \t \t \t <回声消息=“属性不存在” /> \t

+0

如果有人知道如何请修改上述评论到,如果不能确定使用4个缩进代码标签在这里工作的意见。 –

+1

“if”任务仅支持Ant-contrib,我不推荐使用它来进行严重的开发。 – raudi

回答

52

您可以将Condition任务与isset条件一起使用。

<project default="test"> 

    <property name="a" value="a"/> 

    <target name="test"> 

    <condition property="a.set" else="false"> 
     <isset property="a"/> 
    </condition> 

    <condition property="b.set" else="false"> 
     <isset property="b"/> 
    </condition> 

    <echo message="a set ? ${a.set}"/> 
    <echo message="b set ? ${b.set}"/> 

    </target> 
</project> 

输出:

test: 
    [echo] a set ? true 
    [echo] b set ? false 
+6

务必在** '和'的属性名称周围留出** {}。 – Kent

9

由于蚂蚁1.9.1它可以使用 “if” 和 “除非” 属性。如果添加2个命名空间xmlns,则可以使用这些新属性:if =“ant:if”和xmlns:unless =“ant:除非”为该项目。

<!DOCTYPE project> 
<project xmlns:if="ant:if" xmlns:unless="ant:unless"> 
    <property unless:set="property" name="property.is.set" value="false"/> 
    <property if:set="property" name="property.is.set" value="true"/> 
    <echo>${property.is.set}</echo> 
</project> 

也参见https://ant.apache.org/manual/ifunless.html

+2

事实上,您应该使用Ant> = 1.9.3,因为Ant 1.9.1中的第一个实现有与if/unless功能相关的错误! – Rebse