我有一些蚂蚁文件,一个导入另一个。具体来说,build.xml
会导入project_default.xml
。当我尝试进行构建时,我得到以下错误:
Buildfile:C:\ myproject \ build.xml [taskdef]无法加载 资源net / sf / antcontrib / antcontrib.properties中的定义。它 无法找到。
BUILD FAILED C:\ myproject \ build.xml:14:发生以下错误 执行此行时:C:\ myproject \ project_default.xml:17: 问题:如果原因:名称为,则无法创建任务或输入 未定义。行动:检查拼写。行动:检查一下 已声明自定义任务/类型。行动:检查一下 /声明已经发生。
报告的第17行如下:
<if>
<contains string="${env.PROJECT_SELECTION}" substring="env.PROJECT_SELECTION" />
我还在build.xml
中添加了以下内容:
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement location="D:\UserData\ant-contrib-0.6-bin\lib\ant-contrib-0.6.jar"/>
</classpath>
</taskdef>
但得到了同样的错误。知道这里有什么问题吗?
答案 0 :(得分:2)
使用ant版本&gt; 1.6你应该使用“net / sf / antcontrib / antlib.xml”而不是“net / sf / antcontrib / antcontrib.properties”
所以将taskdef更改为:
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<pathelement location="D:\UserData\ant-contrib-0.6-bin\lib\ant-contrib-0.6.jar"/>
</classpath>
</taskdef>
欢呼声,
答案 1 :(得分:0)
要检查的第一件事是你有ant-contrib jar路径corrext。使用-verbose
运行ant以获取有关其正在执行的操作以及尝试从何处加载的任务的更多信息。
你在哪里添加了taskdef?如果你在目标之外使用<if>
任务,那么你需要在它之前的taskdef,也在目标之外。如果你在目标中使用它,那么taskdef可以是(文本上)在调用之后,只要它在目标之外或在<if>
依赖顺序之前运行的目标中。