Ant 如何在雪豹身上有条件地构建蚂蚁目标

Ant 如何在雪豹身上有条件地构建蚂蚁目标,ant,osx-snow-leopard,Ant,Osx Snow Leopard,我有一个跨平台的应用程序,我们使用ant在不同的平台上构建不同的东西。现在,一个新的需求出现了,我需要做不同的事情,如果建立在雪豹或以后与豹 我已经研究了如何区分Windows和Macintosh等,以及如何显示操作系统的附加属性,如${os.version} 我还没有弄清楚的是如何比较os.version的值,如果它是10.6或更高,那么就做雪豹的事情。如果我可以在使用雪豹时将变量snow\u leopard设置为1,我想我可以计算出它的其余部分。使用提供的任务,您可以通过对操作系统版本进行相

我有一个跨平台的应用程序,我们使用ant在不同的平台上构建不同的东西。现在,一个新的需求出现了,我需要做不同的事情,如果建立在雪豹或以后与豹

我已经研究了如何区分Windows和Macintosh等,以及如何显示操作系统的附加属性,如
${os.version}

我还没有弄清楚的是如何比较
os.version
的值,如果它是10.6或更高,那么就做雪豹的事情。如果我可以在使用雪豹时将变量
snow\u leopard
设置为1,我想我可以计算出它的其余部分。

使用提供的任务,您可以通过对操作系统版本进行相等检查,在一定程度上实现这一点

...
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
    <classpath>
        <pathelement location="/location/of/ant-contrib-1.0b3.jar"/>
    </classpath>
</taskdef>
<target name="oscheck">
    <property name="osver" value="${os.version}"/>
    <if>
        <equals arg1="${os.version}" arg2="6.1"/>
        <then>
            <echo message="Windows 7"/>
            ...
        </then>
    </if>
</target>
...
。。。
...
...
您可以使用。可用条件(以操作系统为例)如下所示

它的工作方式与“os系列”相同:

<condition property="isSnowLeopard">
    <os family="mac" version="10.6.6" />
</condition>
当OSX Lion出现时,您可能希望像这样扩展模式:

<condition property="isSnowLeopardOrGreater">
    <matches string="${os.version}" pattern="^10.[67]." />
</condition>


或者为10.7引入单独的检查。

这很好。我希望能够检查是否大于,但模式匹配在实践中应该可以。谢谢,我更喜欢martin的解决方案,但我会记住这一点。
<condition property="isSnowLeopardOrGreater">
    <matches string="${os.version}" pattern="^10.[67]." />
</condition>