0

我发现我在build.xml中需要以下内容:

<taskdef resource="net/sf/antcontrib/antcontrib.properties">
    <classpath>
        <pathelement location="${ant.library.dir}/ant-contrib-1.0b3.jar" />
    </classpath>
</taskdef>

为了支持我正在使用的 ant-contrib <if> ... </if>构造。然而,Eclipse 对此非常不满。将此部分放在build.xml的顶部,无论是从 Eclipse 外部的命令行还是 Eclipse 内部的命令行,一切都可以完美运行,尽管脾气暴躁:

在此处输入图像描述

什么“名称”实际上是“未定义”?我非常想了解如何解决这个问题。谷歌搜索,我看到其他人有相同或相似的问题,但没有人给出一个好的答案,至少不适合我的情况。

非常感谢您对此问题的任何评论,

拉斯

4

2 回答 2

3

我发现了这里描述的问题和简单的解决方法:http: //www.mail-archive.com/user@ant.apache.org/msg39536.html

我通过以下构建文件确认了这一点:

<project default="test">

  <!-- Eclipse complains if you comment this out   -->
  <property name="dummy" value="dummy"/>

  <taskdef resource="net/sf/antcontrib/antlib.xml">
    <classpath>
      <pathelement location="C:/lib/ant-contrib/ant-contrib-1.0b3.jar"/>
    </classpath>
  </taskdef>

  <target name="test">
  </target>

</project>

如果在 taskdef 之前没有属性声明,Eclipse 会抱怨。

我尝试的另一个解决方法是将 taskdef 移动到目标中。这也有效:

  <target name="test" depends="init">
  </target>

  <target name="init">
    <taskdef resource="net/sf/antcontrib/antlib.xml">
      <classpath>
        <pathelement location="C:/lib/ant-contrib/ant-contrib-1.0b3.jar"/>
      </classpath>
    </taskdef>
  </target>
于 2011-12-07T10:51:36.633 回答
0

我不知道我这样做的方式是否只是样式,但是如果您执行了诸如为类路径创建单独的元素之类的操作,例如:

<path id="ant.classpath">
    <fileset dir="${ant.library.dir}">
        <include name="ant-contrib-1.0b3.jar"/>
    </fileset>
</path>

然后在@FailedDev 之类的行上建议利用该classpathref属性?:

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

?

或者,我发现另一件事说要使用antlib.xml而不是antcontrib.properties用于 ANT 版本 1.6+?

编辑:

我很难确定此链接在哪个产品中解决了该问题,但如果没有其他问题,此特定评论中有几个片段可能会为您提供合适的解决方法 - 尽管也许它们就是您所指的当你说的时候到上面

没有人给出一个好的答案,至少不适合 [你的] 解决方案。

https://bugzilla.redhat.com/show_bug.cgi?id=663236#c2

于 2011-12-06T21:59:51.907 回答