如何用蚂蚁确定构建架构(32位/64位)?

2022-09-02 20:31:52

我们继承了一个 ant 构建文件,但现在需要同时部署到 32 位和 64 位系统。

非Java位是用GNUMakefiles完成的,我们只需要调用“uname”来获取信息。有没有一种类似甚至更简单的方法来模仿蚂蚁?


答案 1

迟到派对,但到底是什么...

${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


答案 2

你可以用 ${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。


推荐