4

ant-contrib 的最新版本是ant-contrib-1.0b3.jar

http://ant-contrib.sourceforge.net/tasks/tasks/more_conditions.html

本文件显示endsWith条件

但是我用的是ant 1.8.2 而且ant-contrib-1.0b3.jar,我找不到endsWith条件

    <if>

        <endswith string="D:\FeiLong Soft\Essential\Development\repository\org\springframework\spring-beans" with="spring-beans" />
        <then>
            <echo>equals</echo>
        </then>
        <else>
            <echo>not equals</echo>
        </else>
    </if>

但结果:

BUILD FAILED
E:\Workspaces\feilong\feilong-platform\tools\feilong-tools-ant\build.xml:32: if
doesn't support the nested "endswith" element.

Total time: 1 second
4

2 回答 2

4

特别是在检查 antcontrib(版本 1.0b2 或 1.0b3)的源代码时net/sf/antcontrib/antcontrib.properties../antlib.xml 您会看到,没有startsWithendsWith条件,尽管它在antcontrib 手册中有所提及。

这两个条件源自Antelope 项目,该项目提供了一个用于运行 ant 和几个 ant 任务的 UI。几年前有计划将 Antelope 与 AntContrib 合并,请参阅Antelope Tasks Merging with AntContrib和 Antelope 项目网站:

Antelope Project 还提供了一组附加任务,这些任务提供了与 Ant 一起分发的标准任务中没有的功能。将 Antelope 任务与 AntContrib 项目合并的工作正在进行中。
[...]
Ant-Contrib 项目是 Apache Ant 的一组任务(有时可能是类型和其他工具)。一些 Antelope 任务现在是该项目的一部分。

但不知何故,那些合并计划停滞不前,从未正确完成,Antcontrib 似乎也死了 - 2006-11-02 的最新版本 1.0b3

无论如何,您可以将ant 匹配条件与 antcontrib 一起使用:

<project>
 <!-- Import AntContrib -->
 <taskdef resource="net/sf/antcontrib/antlib.xml"/>
 <property name="foo" value="D:\FeiLong Soft\Essential\Development\repository\org\springframework\spring-beans"/>

 <if>
 <matches string="${foo}" pattern="^.+spring-beans$"/>
  <then>
   <echo>equals</echo>
  </then>
  <else>
   <echo>not equals</echo>
  </else>
 </if>
</project>

羚羊蚂蚁任务

于 2015-04-15T07:55:09.793 回答
0

我使用“startwith”遇到了同样的问题,但没有找到解决方案。我不明白“包含”工作的原因,但“startwith”和“endwith”不明白。

<if>
    <contains string="a sample string" substring="sample" />
    <then>
        <echo>match</echo>
    </then>
    <else>
        <echo>not match</echo>
    </else>
</if>
于 2015-04-14T20:44:34.687 回答