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



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

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

当这样做时,我得到以下消息。

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

先阅读说明书:

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/

正是你的错误信息所说的…

元素类型"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>

相关内容

  • 没有找到相关文章

最新更新