2015-05-29 60 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