2012-05-21 51 views
0

這是一小段代碼,請給看看它然後按照說明....如何檢查螞蟻中的條件並根據其值打印消息?

<condition property="${param1}"> 
      <or> 
       <istrue value="win-x86"/> 
       <istrue value= "win-x86-client"/> 
       <istrue value= "win-x64"/> 
      </or> 
    </condition> 
    <target name="Mytarget" if="${param1}"> 
     <echo message="executing windows family build:::${param1}"/> 
    </target> 
<target name="print.name" > 
    <antcall target="win-x86-build"> 
     <param name="param1" value="${platform.id}"/> 
    </antcall> 
</target> 

我想,當過platform.id包含任何窗口的姓應該打印郵件EXECUTING WINDOWS FAMILY BUILD,但問題在於,即使家人是unix,它也會打印此消息。

我想我要麼不正確地檢查條件,要麼我正在做一些其他的錯誤。
有人可以幫我解決這個問題嗎?

回答

2

彼得試圖解釋你必須明確指定屬性名稱。請嘗試以下方法讓你的代碼工作:

<project name="demo" default="Mytarget"> 

    <condition property="windoze"> 
     <or> 
      <equals arg1="${param1}" arg2="win-x86"/> 
      <equals arg1="${param1}" arg2="win-x86-client"/> 
      <equals arg1="${param1}" arg2="win-x64"/> 
     </or> 
    </condition> 

    <target name="Mytarget" if="windoze"> 
     <echo message="executing windows family build:::${param1}"/> 
    </target> 

</project> 

一個更好的解決辦法是利用內置ANT的condition任務操作系統的測試。

<project name="demo" default="Mytarget"> 

    <condition property="windoze"> 
     <os family="windows"/> 
    </condition> 

    <target name="Mytarget" if="windoze"> 
     <echo message="executing windows family build:::${os.name}-${os.arch}-${os.version}"/> 
    </target> 

</project> 
+0

第一個爲我工作,不是第二個反正謝謝... – user1390517

4

看起來像你誤解了Condition Task

property:屬性的名稱進行設置。

嘗試使用Conditionos

測試當前的操作系統是否是給定類型的。

+0

我傳遞我自己的價值platform.id和我要檢查,如果它要麼是上述三個 – user1390517

+0

隨後的嘗試使用['equals' condition](http://ant.apache.org/manual/Tasks/conditions.html#equals)。 –

+0

我認爲你的人不理解我的問題,如果platform.id包含上述三個值中的任何一個,那麼我的程序流程與上面的完全相同,那麼應該打印出消息。這就是我想要我的程序做 – user1390517

2

由於螞蟻1.9.1,你可以這樣做:

<project name="tryit" xmlns:if="ant:if" xmlns:unless="ant:unless"> 
    <exec executable="java"> 
    <arg line="-X" if:true="${showextendedparams}"/> 
    <arg line="-version" unless:true="${showextendedparams}"/> 
    </exec> 
    <condition property="onmac"> 
    <os family="mac"/> 
    </condition> 
    <echo if:set="onmac">running on MacOS</echo> 
    <echo unless:set="onmac">not running on MacOS</echo> 
</project> 
+0

至少使用v1.9.3 - 另請參閱https://bz.apache.org/bugzilla/show_bug.cgi?id=55885 –

+0

官方文檔:https: //ant.apache.org/manual/ifunless.html –