java - 如何用 ant 确定构建架构(32 位/64 位)?

我们继承了一个 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/

相关文章:

macos - OS X : MACOSX_RPATH is not specified for t

c++ - 解决 Visual Studio 2010 AlwaysCreate 重建问题

netbeans - 为什么 NetBeans 无法为我的某些项目找到 CopyLibs?

msbuild - 如何减少 MSBuild 时间

iphone - 如何在 Xcode 中一次在多个目的地上 'Build & Run'?

reactjs - create-react-app npm 运行构建命令

caching - Docker 构建未使用缓存

c++ - C++ 依赖生产没有自动化的理论原因是什么?

java - Ant scp 任务不起作用,即使在 ant/lib 上使用 jsch

c++ - 当 CMake 中的生成器或输入发生更改时,如何仅构建自动生成的代码?