【问题标题】:Find cause of ant failure找出蚂蚁失败的原因
【发布时间】:2012-09-14 07:49:00
【问题描述】:

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

Buildfile: C:\myproject\build.xml [taskdef] 无法加载 来自资源 net/sf/antcontrib/antcontrib.properties 的定义。它 找不到。

构建失败 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>  

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

【问题讨论】:

    标签: java ant


    【解决方案1】:

    对于 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>  
    

    干杯,

    【讨论】:

    • 复制粘贴您的代码,但仍然出现相同的错误。Could not load definitions from resource net/sf/antcontrib/antcontrib.properties.
    • 嗨,您在 build.xml 文件中的哪个位置执行 taskdef? jar 文件真的位于“D:\UserData\ant-contrib-0.6-bin\lib\ant-contrib-0.6.jar”吗?除了显式定义它,您还可以将其移动到 ant 安装的 lib 目录...这样您就不需要 ...
    【解决方案2】:

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

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

    【讨论】:

    • 这不是我的 ant 文件,我发现 &lt;if&gt; 不是 taskdef 或 target 的一部分
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    相关资源
    最近更新 更多