2015-05-29 29 views
0

看來ant唯一可靠提供的屬性是「os.name」屬性。然而,這名字有變;謊言「視窗8」的「Windows 7」等如何在ant build中測試操作系統

但對於我而言都是「窗口」 -

有有條件地設置基礎上,將部分字符串匹配的屬性的方式另一個屬性值如下面的僞代碼?特別是os.name作爲源值?使用通用ant安裝提供的默認任務集?

if(a.property 'contains' "Windows") 
    another.property = "windows value" 
else if(a.property contains 'Linux') 
    another.property = "linux value" 
endif 

回答

1

您可以使用os family

 <condition property="another.property" value="windows value" > 
      <os family="windows" /> 
     </condition> 


     <condition property="another.property" value="linux value" > 
      <os family="unix" name="Linux"/> 
     </condition> 
+0

我也是在這個「條件」節點注意到其他=「值,如果不是真的」。 現在看起來像我真正想要的是做有條件地定義「macrodef」一個版本的Windows和一個用於Linux,因此所有擴展宏任務適應 - 另一個問題:) – peterk

+0

您可能會如果Windows使用別的和Linux是唯一有針對性的操作系統,而且你不會在AIX或其他東西上部署 –

+0

Oleg Pavliv--是的,這種邏輯的本質更復雜的情況更像是由這些元素構成的「開關」。但坦率地說,這樣做是立即擺脫螞蟻,因爲它是不可編程的,併產生基於ruby/rake的腳本,必須在Windows反斜槓環境中使用「cmd」與任何unix變體產生不同的派生腳本。 :) :) – peterk