Как условно построить цель муравья на снежном барсе - PullRequest
5 голосов
/ 10 февраля 2011

У меня есть кроссплатформенное приложение, и мы используем ant для создания разных вещей на разных платформах. Теперь появилось новое требование, и мне нужно действовать по-другому, если строить на Snow Leopard или позже против Leopard.

Я смотрел на http://www.devdaily.com/blog/post/java/how-determine-operating-system-os-ant-build-script, который показывает, как отличить Windows от Macintosh и т. Д., И http://www.jajakarta.org/ant/ant-1.6.1/docs/en/manual/api/org/apache/tools/ant/taskdefs/condition/Os.html, который показывает дополнительные свойства для os, например ${os.version}.

Что я не понял, так это то, как я могу сравнить значение os.version и, если оно равно 10,6 или выше, сделать снежный барс. Если бы я мог установить переменную snow_leopard равной 1, когда на Snow Leopard я думаю, я бы смог понять все остальное.

Ответы [ 2 ]

6 голосов
/ 10 февраля 2011

Вы можете использовать для этого задачу condition .Доступные условия, характерные для os: здесь .

Это будет работать так же, как и для 'os family':

<condition property="isSnowLeopard">
    <os family="mac" version="10.6.6" />
</condition>

Но это означаетВы должны ввести инкрементный номер версии - строка версии должна точно соответствовать.

Для альтернативы 'fuzzier' вы можете использовать условие matches, что-то вроде этого, возможно,

<condition property="isSnowLeopard">
    <matches string="${os.version}" pattern="^10.6." />
</condition>

Когда появляется OSX Lion, вы можете расширить шаблон следующим образом:

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

Или ввести отдельную проверку для 10.7.

1 голос
/ 10 февраля 2011

Используя задачу <if>, предоставленную ant-contrib , вы можете достичь этого в некоторой степени, выполнив проверку равенства для версии os.

...
<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>
...
...