2011-11-10 79 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