3

我有一些 ant 文件,一个导入另一个。专门build.xml导入一个project_default.xml. 当我尝试进行构建时,出现以下错误:

构建文件: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>  

但是得到了同样的错误。知道这里有什么问题吗?

4

2 回答 2

2

对于 ant 版本 > 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>  

干杯,

于 2012-09-14T08:11:56.903 回答
0

首先要检查的是你有 ant-contrib jar 路径 corrext。运行 ant-verbose以获取有关它正在做什么以及它试图从何处加载哪些任务的更多信息。

你在哪里添加了taskdef?如果您在<if>目标之外使用任务,那么您需要在它之前使用 taskdef,也需要在目标之外。如果您在目标内部使用它,那么 taskdef 可以(在文本上)在调用之后,只要它在目标之外或在<if>依赖顺序之前运行的目标中。

于 2012-09-14T08:16:55.167 回答