Как проверить состояние в ant и в зависимости от его значения напечатать сообщение?

Это небольшой кусочек кода, пожалуйста, посмотрите на него и следуйте описанию ....

    <condition property="${param1}">
            <or>
                <istrue value="win-x86"/>
                <istrue value= "win-x86-client"/>
                <istrue value= "win-x64"/>
            </or>
     </condition>
    <target name="Mytarget" if="${param1}">
        <echo message="executing windows family build:::${param1}"/>
    </target>
<target name="print.name" >
    <antcall target="win-x86-build">
       <param name="param1" value="${platform.id}"/>
    </antcall>
</target>

Я хочу, чтобы, когда когда-либо platform.id содержал какое-либо имя семейства Windows, он должен был напечатать сообщенEXECUTING WINDOWS FAMILY BUILD но проблема в том, что он печатает это сообщение даже тогда, когда семейство Unix.

Я думаю, что я не проверяю условие должным образом, или я делаю какую-то другую ошибку.
Может кто-нибудь помочь мне с этим, пожалуйста?

Ответы на вопрос(3)

Условие Задача:

property: Имя свойства для установки.

Попробуйте с помощьюСостояниos:

Проверьте, относится ли текущая операционная система к указанному типу.

 user139051721 мая 2012 г., 10:17
Я передаю свое собственное значение в platform.id, и я хочу проверить, является ли оно одним из трех выше
 Peter Lang21 мая 2012 г., 11:17
Я думаю, что вы, люди, не понимаете мой ответ :) Вы неправильно используете условие.property - это имя свойства, которое нужно установить -н проверяется, и istrue проверяет, имеет ли свойство с таким именем значениеtrue, yes илиon. Вы хотите проверить на конкретные значения, значит, это то, что вы хотите. В документации есть прекрасные примеры, поэтому я не собираюсь писать этот код для вас. Не стесняйтесь спрашивать, есть ли у вас проблемы с реализацией.
 Peter Lang21 мая 2012 г., 10:39
Тогда попробуйтеequals состояни.
 Mark O'Connor21 мая 2012 г., 21:34
+ 1 Все, что я сделал, это добавил примеры.
 user139051721 мая 2012 г., 10:47
Я думаю, что вы, люди, не понимаете мой вопрос, моя программа работает точно так же, как и выше, если platform.id содержит любое из трех указанных выше значений, то сообщение должно быть распечатано. это то, что я хочу, чтобы моя программа делала
Решение Вопроса

что вы должны явно указать имя свойства. Попробуйте следующее, чтобы ваш код работал:

<project name="demo" default="Mytarget">

    <condition property="windoze">
        <or>
            <equals arg1="${param1}" arg2="win-x86"/>
            <equals arg1="${param1}" arg2="win-x86-client"/>
            <equals arg1="${param1}" arg2="win-x64"/>
        </or>
    </condition>

    <target name="Mytarget" if="windoze">
        <echo message="executing windows family build:::${param1}"/>
    </target>

</project>

Лучшим решением было бы использовать тесты операционной системы, встроенные в ANсостояни задача.

<project name="demo" default="Mytarget">

    <condition property="windoze">
        <os family="windows"/>
    </condition>

    <target name="Mytarget" if="windoze">
        <echo message="executing windows family build:::${os.name}-${os.arch}-${os.version}"/>
    </target>

<,/project>
 user139051722 мая 2012 г., 06:19
Первый работает на меня, а не второй в любом случае, спасибо ...

С муравья 1.9.1 вы можете сделать это:

<project name="tryit" xmlns:if="ant:if" xmlns:unless="ant:unless">
   <exec executable="java">
     <arg line="-X" if:true="${showextendedparams}"/>
     <arg line="-version" unless:true="${showextendedparams}"/>
   </exec>
   <condition property="onmac">
     <os family="mac"/>
   </condition>
   <echo if:set="onmac">running on MacOS</echo>
   <echo unless:set="onmac">not running on MacOS</echo>
</project>
 Jörg07 февр. 2017 г., 14:49
использовать как минимум v1.9.3 - см. также Bz.apache.org / Bugzilla / show_bug.cgi? ID = 55885
 Jörg07 февр. 2017 г., 14:50
Официальная документация: Ant.apache.org / ручной / ifunless.html

Ваш ответ на вопрос