我们继承了一个 ant 构建文件,但现在需要部署到 32 位和 64 位系统。
非 Java 位使用 GNUMakefiles 完成,我们只需调用“uname”来获取信息。有没有类似甚至更简单的方法来用 ant 模拟这个?
最佳答案
派对迟到了,但到底是怎么回事......
${os.arch} 仅告诉您 JVM 是否为 32/64 位。您可能在 64 位操作系统上运行 32 位 JVM。试试这个:
<var name ="os.bitness" value ="unknown"/>
<if>
<os family="windows"/>
<then>
<exec dir="." executable="cmd" outputproperty="command.ouput">
<arg line="/c SET ProgramFiles(x86)"/>
</exec>
<if>
<contains string="${command.ouput}" substring="Program Files (x86)"/>
<then>
<var name ="os.bitness" value ="64"/>
</then>
<else>
<var name ="os.bitness" value ="32"/>
</else>
</if>
</then>
<elseif>
<os family="unix"/>
<then>
<exec dir="." executable="/bin/sh" outputproperty="command.ouput">
<arg line="/c uname -m"/>
</exec>
<if>
<contains string="${command.ouput}" substring="_64"/>
<then>
<var name ="os.bitness" value ="64"/>
</then>
<else>
<var name ="os.bitness" value ="32"/>
</else>
</if>
</then>
</elseif>
</if>
<echo>OS bitness: ${os.bitness}</echo>
编辑: 正如@GreenieMeanie 指出的那样,这需要来自 ant-contrib.sourceforge.net 的 ant-contrib 库
https://stackoverflow.com/questions/218989/