我发现我需要 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内部,所有内容都能正常工作,尽管这些内容很糟糕:
“名称”究竟是什么“未定义”?我非常想知道该怎么办这个问题。谷歌搜索,我看到其他人有相同或类似的问题,但没有人得到一个很好的答案,至少不符合我的情况。
感谢您对此问题的任何意见,
拉斯
答案 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 +?
修改强>
我很难确定此链接在哪个产品中修复了该问题,但如果没有其他内容,此特定评论中可能会有一些代码段可能为您提供合适的解决方法 - 尽管可能它们就是您当你说
时,请指上述内容没有人给出一个好的答案,至少不适合[你的]解决方案。