tags:

views:

1106

answers:

2

I want to set a path variable cp to one of two values depending on the value of an property.

E.g. the following is what I'm trying to achieve, but I'm not sure about how to get it working properly...

<if>
    <contains string="${jboss.home}" substring="jboss-4.2.3.GA"></contains>
    <then>
        <echo message="Using JBoss 4.2.3 classpath"/>
        <path id="cp"> 
        ...
        </path>
    </then>
    <else>
        <echo message="Using JBoss 4.0.5 classpath"/>
        <path id="cp">
        ...
        </path>
    </else>
</if>
+2  A: 
<condition property="usejboss423">
    <contains string="${jboss.home}" substring="jboss-4.2.3.GA"/>
</condition>

<target name="build.jboss.cp" depends="build.jboss.cp.423,build.jboss.cp.405"/>

<target name="build.jboss.cp.423" if="usejboss423">
    <path id="cp">
    ... JBoss 4.2.3 classpath
    </path>
</target>

<target name="build.jboss.cp.405" unless="usejboss423">
    <path id="cp">
    ... JBoss 4.0.5 classpath
    </path>
</target>
Alex B
+1  A: 

If you need to do this kind of thing a lot, install AntXtras. You just add a JAR file to Ant's class path, and you can do this:

<condition property="usejboss423">
  <contains string="${jboss.home}" substring="jboss-4.2.3.GA"/>
</condition>

<do if="usejboss423">
  ...
</do>

<do unless="usejboss423">
  ...
</do>

It has a lot of other useful features.

JW