2014-01-23 49 views
1

可以通過指定ifunless子句有條件地執行Ant目標。據我所見,這個子句只接受一個屬性。我如何檢查兩個屬性?如何在Ant任務的if條件中檢查兩個屬性?

這是一個例子:

<project default="test"> 
    <property name="a" value="true"/> 
    <property name="b" value="true"/> 
    <target name="test-a" if="a"> 
    <echo>a</echo> 
    </target> 
    <target name="test-b" if="b"> 
    <echo>b</echo> 
    </target> 
    <target name="test-ab" if="a,b"> 
    <echo>a and b</echo> 
    </target> 
    <target name="test" depends="test-a,test-b,test-ab"/> 
</project> 

如果我運行它,所述test-ab目標不產生輸出:

 
$ ant -f target-if.xml 
Buildfile: target-if.xml 

test-a: 
    [echo] a 

test-b: 
    [echo] b 

test-ab: 

test: 

BUILD SUCCESSFUL 
Total time: 0 seconds 

如何指定一個和表達爲兩個屬性?

回答

2

不幸的是,沒有。 From the ant Targets manual:

只能在if/unless子句中指定一個屬性名。如果您 要檢查多個條件,您可以使用dependend目標 計算結果的檢查:

<target name="myTarget" depends="myTarget.check" if="myTarget.run"> 
    <echo>Files foo.txt and bar.txt are present.</echo> 
</target> 

<target name="myTarget.check"> 
    <condition property="myTarget.run"> 
     <and> 
      <available file="foo.txt"/> 
      <available file="bar.txt"/> 
     </and> 
    </condition> 
</target> 
1

這是我的例子與使用條件元素:

<project default="test"> 
    <property name="a" value="true"/> 
    <property name="b" value="true"/> 
    <target name="test-a" if="a"> 
    <echo>a</echo> 
    </target> 
    <target name="test-b" if="b"> 
    <echo>b</echo> 
    </target> 
    <condition property="a-and-b"> 
    <and> 
     <equals arg1="${a}" arg2="true"/> 
     <equals arg1="${b}" arg2="true"/> 
    </and> 
    </condition> 
    <target name="test-ab" if="a-and-b"> 
    <echo>a and b</echo> 
    </target> 
    <target name="test" depends="test-a,test-b,test-ab"/> 
</project> 
相關問題