ant - Apache ant 无法识别 'for' 任务/宏,虽然我已经通过 taskdef 添加了 ant-contrib

标签 ant build

我在进行 ant build 时得到关注:

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"/> ,它没有工作。然后我专门添加了以下,但它仍然无法正常工作。

<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_HOME 目录中。

假设您创建了一个名为 ant-contrib.dir 的目录并将其放在项目的根目录中,然后将 ant-contrib jar 放在该文件夹中。只需将其放入您的项目中即可:

<taskdef resource="net/sf/antcontrib/antlib.xml">
    <classpath>
          <fileset dir="${basedir}/ant-contrib.dir"/>
    </classpath>
</taskdef>

关于ant - Apache ant 无法识别 'for' 任务/宏,虽然我已经通过 taskdef 添加了 ant-contrib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12407637/

相关文章:

java - Gradle : How to call implicit task provided by application plugin from other task

java - 如何构建具有相同源代码但不同资源的不同 APK

java - 使用 Apache Ant 清理陈旧的 .class 文件

npm - 在 npm 依赖项中包含 fabricjs 以及手势模块的自定义构建

groovy - 停止 Gradle 构建的推荐方法

tomcat - 如果我知道使用 ANT 的文件夹名称不完整,如何将文件复制到文件夹

android - 如何构建符合 Google Play 64 位要求的 NativeScript Vue 应用程序?

java - izpack 和 build.properties

java - 从 IVY 存储库中删除孤立 JAR

ant - 显示 rakefile 任务的所有描述的命令?