Using Ant, is it possible to use AND, OR condition in tag IF?

Krzysztof Miksa picture Krzysztof Miksa · Dec 3, 2010 · Viewed 18.9k times · Source

contrib It's possible to check more condition in tag IF?
I need to do something like this :

<if>
<equals arg1="${var}" arg2="one"/>
<or>
    <equals arg1="${var}" arg2="two"/>
</or>
<or>
    <equals arg1="${var}" arg2="three"/>
</or>
<or>
    <equals arg1="${var}" arg2="four"/>
</or>
<then>
    <echo message="basic dir: ${var}"/>
    <copy todir="../direct" verbose="yes" failonerror="no" overwrite="yes">
        <fileset dir="${var}">
            <include name="**"/>
        </fileset>
    </copy>
</then></if>

How to do many conditions in one IF?

UPDATE: solve:

<if>
<or>
    <equals arg1="${var}" arg2="one"/>    
    <equals arg1="${var}" arg2="two"/>
    <equals arg1="${var}" arg2="three"/>
    <equals arg1="${var}" arg2="four"/>
</or>
<then>
    <echo message="basic dir: ${var}"/>
    <copy todir="../direct" verbose="yes" failonerror="no" overwrite="yes">
        <fileset dir="${var}">
            <include name="**"/>
        </fileset>
    </copy>
</then></if>

Answer

Andreas Dolk picture Andreas Dolk · Dec 3, 2010

<If> is based on <condition> and supports (that's my understanding) the same nested elements (conditions).

Give this a try:

<if>
   <or>
    <equals arg1="${var}" arg2="one"/>
    <equals arg1="${var}" arg2="two"/>
    <equals arg1="${var}" arg2="three"/>
    <equals arg1="${var}" arg2="four"/>
   </or>
   <then>
    <echo message="basic dir: ${var}"/>
    <copy todir="../direct" verbose="yes" failonerror="no" overwrite="yes">
        <fileset dir="${var}">
            <include name="**"/>
        </fileset>
    </copy>
   </then>
</if>