如何用蚂蚁确定构建架构(32位/64位)?
我们继承了一个 ant 构建文件,但现在需要同时部署到 32 位和 64 位系统。
非Java位是用GNUMakefiles完成的,我们只需要调用“uname”来获取信息。有没有一种类似甚至更简单的方法来模仿蚂蚁?
我们继承了一个 ant 构建文件,但现在需要同时部署到 32 位和 64 位系统。
非Java位是用GNUMakefiles完成的,我们只需要调用“uname”来获取信息。有没有一种类似甚至更简单的方法来模仿蚂蚁?
迟到派对,但到底是什么...
${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
你可以用 ${os.arch} 从 ant 获取 java 系统属性 (http://java.sun.com/javase/6/docs/api/java/lang/System.html#getProperties())。其他感兴趣的属性可能是 os.name,os.version,sun.cpu.endian和sun.arch.data.model。