ant-contrib在1.8.2 build.xml中需要,但会导致错误

时间:2011-12-06 20:24:51

标签: eclipse ant ant-contrib

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

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

为了支持ant-contrib &lt; if&gt; ...&lt; / if&gt; 构造我正在使用。但是,Eclipse对此非常不满。将此部分放在 build.xml 的顶部,无论是从Eclipse外部的命令行还是在Eclipse内部,所有内容都能正常工作,尽管这些内容很糟糕:

enter image description here

“名称”究竟是什么“未定义”?我非常想知道该怎么办这个问题。谷歌搜索,我看到其他人有相同或类似的问题,但没有人得到一个很好的答案,至少不符合我的情况。

感谢您对此问题的任何意见,

拉​​斯

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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