0

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

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

完成后,我收到以下消息。

元素类型 "equals" 必须后跟属性规范、">" 或 "/>"

我正在使用 Eclipse 框架来执行此操作。

4

2 回答 2

2

首先阅读手册:

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

显然,从我们知道的手册中equals

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

所以应该是

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

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


更新:

<if>任务不是由 Ant 提供的;它由 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/

于 2013-03-04T05:26:24.127 回答
0

正是你的错误消息所说的......

元素类型 "equals" 必须后跟属性规范、">" 或 "/>"

你要这个:

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

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

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

如果你正在做一个不等于条件,它看起来像这样:

<if>
    <not>
        <equals arg1="${mat.projectName}" arg2="seal"/>
    </not>
    <then>
        <yadda, yadda, yadda/>
    </then>
</if>
于 2013-03-04T22:58:17.677 回答