在ant脚本中使用if语句时的异常

时间:2013-03-04 04:46:30

标签: ant ant-contrib

我试图将属性变量的值与字符串进行比较,如下所示

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

完成后,我收到了以下信息。

  

元素类型“等于”必须后跟属性规范,“&gt;”要么   “/&gt;” 中

我正在使用eclipse框架来做到这一点。

2 个答案:

答案 0 :(得分:2)

首先阅读手册:

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

显然,我们知道equals的手册:

  

arg1要测试的第一个值   arg2要测试的第二个值

所以它应该是

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

我建议您先阅读有关XML的指南,然后阅读Ant的手册。


<强>更新

Ant不提供

<if>任务;它由Ant-Contrib提供。所以你需要<taskdef>

例如,我将ant-contrib.jar放入项目的lib目录($ {basedir} / lib)中,所以我可以编写以下内容:

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

更多信息,您可以查看taskdef的手册页以及Ant-contrib的网页:

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

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

答案 1 :(得分:0)

您的错误信息正是......

  

元素类型&#34;等于&#34;必须遵循属性规范,&#34;&gt;&#34;或&#34; /&gt;&#34;

你想要这个:

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

这是XML,因此您需要带有值的参数。请查看此页面上的equals条件。它需要两个参数。

注意<if>的格式。条件以/>结尾。 <then><if>的子实体, if子句<then>子句的子实体。请注意,您基本上缩进了两次。

如果您正在执行不等于条件,则看起来像这样:

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