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

0

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

    <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   ответа
4

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

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

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

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

+ 1 Все, что я сделал, это добавил примеры. Mark O'Connor
Я передаю свое собственное значение в platform.id, и я хочу проверить, является ли оно одним из трех выше user1390517
Я думаю, что вы, люди, не понимаете мой вопрос, моя программа работает точно так же, как и выше, если platform.id содержит любое из трех указанных выше значений, то сообщение должно быть распечатано. это то, что я хочу, чтобы моя программа делала user1390517
Я думаю, что вы, люди, не понимаете мой ответ :) Вы неправильно используете условие.property - это имя свойства, которое нужно установить -н проверяется, и istrue проверяет, имеет ли свойство с таким именем значениеtrue, yes илиon. Вы хотите проверить на конкретные значения, значит, это то, что вы хотите. В документации есть прекрасные примеры, поэтому я не собираюсь писать этот код для вас. Не стесняйтесь спрашивать, есть ли у вас проблемы с реализацией. Peter Lang
Тогда попробуйтеequals состояни. Peter Lang
2

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

<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>
Первый работает на меня, а не второй в любом случае, спасибо ... user1390517
2

С муравья 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>
использовать как минимум v1.9.3 - см. также Bz.apache.org / Bugzilla / show_bug.cgi? ID = 55885 Jörg
Официальная документация: Ant.apache.org / ручной / ifunless.html Jörg

Похожие вопросы