在进行Ant构建时,我得到了以下信息:

Build\build.xml:247: Problem: failed to create task or type
for
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.

build.xml行247是<for param="file">
已经定义了,但不起作用。然后我特别添加了以下内容,但它仍然不起作用。
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
        <classpath>
            <pathelement location="${env.ANT_HOME}/lib/ant-contrib-1.0b3.jar"/>
        </classpath>
    </taskdef>

我在c:\softwares\apache-ant-1.8.4\lib目录下有ant-contrib-1.0b3.jar。这里缺少什么?

最佳答案

如果您将antcontrib jar放在$ANT_HOME/lib目录中,那么您真正需要做的就是:

<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>

实际上,要使用<for/>任务,需要执行以下操作:
<taskdef resource="net/sf/antcontrib/antlib.xml"/>

注意,您必须使用antlib.xml而不是antcontrib.properties。仔细阅读Installation directions。很容易错过。
如果您在一个小组项目中这样做,我建议您将ant-contrib.jar放到您的项目中。然后将它们添加到版本控制系统中的项目中。这样,其他开发人员就可以将您的构建与Ant-Contrib任务一起使用,而无需下载Ant-Contrib jar并将其安装到$ant_主目录中。
假设您创建了一个名为ant-contrib.dir的目录,并将其放在项目的根目录中,然后将ant contrib jar放在该文件夹中。把这个放到你的项目中:
<taskdef resource="net/sf/antcontrib/antlib.xml">
    <classpath>
          <fileset dir="${basedir}/ant-contrib.dir"/>
    </classpath>
</taskdef>

关于尽管我已经通过taskdef添加了ant contrib,但是apache ant不识别'for'任务/宏。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12407637/

10-10 04:16