2015-05-20 86 views
0

我有一個關於ANT如果其他任務的查詢。瀏覽了很多東西之後,我明白了我們沒有直接的如果其他任務在螞蟻中。ANT如果其他任務的方法

我的要求:

<if> 
    <equals arg1="value" arg2="value" /> 
<then> 
     <property name="var1" value="class1"/> 
</then> 
<else> 
     <property name="var1" value="class2"/> 
</else> 
</if> 

下面是我的問題:

1)如果我們不能用ANT做到這一點,任何人都可以建議我的另一種方法來實現它在ANT> 1.6
版本2)如果我在ANT_HOME/lib中使用antcontrib.jar作爲替代,我必須將相同的jar保存在build.xml中的classpath中。我可以有相同的語法。我將cmd文件稱爲我的build.xml文件。此外,在執行任何目標之前,我必須設置屬性2.

+0

不是[有條件的任務(https://ant.apache.org/manual/Tasks/condition.html)你在找什麼呢? –

+0

嗨Cristain,謝謝你的迴應。有條件的也很好,但我滯後於使用條件任務創建上面提到的代碼。我無法使用條件任務設置屬性。我可以有我的以上要求的代碼示例。 –

回答

0

您可以使用嵌套conditions的一對condition任務對變量值進行正匹配和負匹配,從而相應地設置屬性。 (如果該條件不匹配,它不設置屬性。)

的build.xml

<project> 
    <condition property="var1" value="class1"> 
    <equals arg1="value" arg2="${the_value}"/> 
    </condition> 
    <condition property="var1" value="class2"> 
    <not> 
     <equals arg1="value" arg2="${the_value}"/> 
    </not> 
    </condition> 
    <echo>the_value: ${the_value}</echo> 
    <echo>var1: ${var1}</echo> 
</project> 

輸出:條件肯定匹配

$ ant 
Buildfile: C:\Users\sudocode\tmp\ant\build.xml 
    [echo] the_value: ${the_value} 
    [echo] var1: class2 

BUILD SUCCESSFUL 
Total time: 0 seconds 

輸出:條件否定匹配

$ ant -Dthe_value=value 
Buildfile: C:\Users\sudocode\tmp\ant\build.xml 
    [echo] the_value: value 
    [echo] var1: class1 

BUILD SUCCESSFUL 
Total time: 0 seconds 

或者更簡單地說,用value和來定義單個條件屬性爲相同的結果:

<project> 
    <condition property="var1" value="class1" else="class2"> 
    <equals arg1="value" arg2="${the_value}"/> 
    </condition> 
    <echo>the_value: ${the_value}</echo> 
    <echo>var1: ${var1}</echo> 
</project> 
+0

感謝sudocode您的迴應。 –