user1969650
user1969650

Reputation: 45

exception when using if statment in ant script

I am trying to compare the value of a properties variable with a string as following

<if>
    <equals "${mat.projectName}"="seal">
<then>

When done so, I'm getting following message.

Element type "equals" must be followed by either attribute specifications,">" or "/>"

I'm using eclipse framework to do this.

Upvotes: 0

Views: 612

Answers (2)

David W.
David W.

Reputation: 107040

Exactly what you're error message says...

Element type "equals" must be followed by either attribute specifications,">" or "/>"

You want this:

<if>
    <equals arg1="${mat.projectName}" arg2="seal"/>
    <then>
        <yadda, yadda, yadda/>
    </then>
</if>

This is XML, so you need parameters with values. Take a look at the equals condition on this page. It takes two parameters.

Notice the format of the <if>. The condition ends with a />. The <then> is a sub-entity of the <if>, and the if clause is a sub-entity of the <then> clause. Notice that you basically indent twice.

If you're doing a not equals condition, it would look like this:

<if>
    <not>
        <equals arg1="${mat.projectName}" arg2="seal"/>
    </not>
    <then>
        <yadda, yadda, yadda/>
    </then>
</if>

Upvotes: 0

Dante WWWW
Dante WWWW

Reputation: 2739

Read the manual first:

http://ant.apache.org/manual/Tasks/conditions.html

clearly, from the manual we know for equals:

arg1 First value to test arg2 Second value to test

So it should be

<if>
    <equals arg1="${mat.projectName}" arg2="seal" />
<then>
    ...

I recommend you to read guides about XML first, and then, Ant's manual.


Update:

<if> task is not provided by Ant; it is provided by Ant-Contrib. So you need <taskdef>.

For example, I have ant-contrib.jar put in my project's lib directory (${basedir}/lib), so I can write the following:

<taskdef resource="net/sf/antcontrib/antcontrib.properties">
    <classpath>
        <pathelement location="lib/ant-contrib.jar"/>
    </classpath>
</taskdef>

For more, you can check taskdef's manual page, as well as Ant-contrib's webpage:

http://ant.apache.org/manual/Tasks/taskdef.html

http://ant-contrib.sourceforge.net/

Upvotes: 2

Related Questions