【发布时间】:2014-03-31 01:57:01
【问题描述】:
我正在用java为ant编写一个自定义任务,我的想法是我可以给某人一个.jar,其中包含java文件,如类和库以及ant的build.xml,他可以使用它。
如果我导出我的 java 项目,.jar (antTask.jar) 包含: 一个用于编译类的文件夹,一个用于库、meta-inf 文件夹和 .classpath .project 文件
ant build.xml 如下所示:
<?xml version="1.0" ?>
<project name="repair" basedir="." default="repairTask">
<taskdef name="antTask" classpath="antTask.jar" classname="def.RepairTask"/>
<target....
我真的不明白所有这些类路径的东西,所以有人可以告诉我我必须在我的构建文件中添加什么,以便它只适用于没有 java 代码源的这个 .jar 文件吗?
现在我收到一个错误,即 ant 找不到我在 java 代码中使用的库之一(但 antTask.jar 包含此库作为另一个 .jar):
taskdef A class needed by class def.RepairTask cannot be found: org/apache/commons/...
using the classloader AntClassLoader[C:...\AntTask\antTask.jar]
我尝试了好几个小时,但我只是不知道如何编辑我的 build.xml,所以我只需要指向这个单个 .jar 文件,它就可以工作..
谢谢大家
【问题讨论】:
-
你能把 Ant 的整个错误信息贴出来吗?我怀疑您正在引用第三方 JAR(如 Apache StringUtils),在您使用自定义 Ant 任务的后续项目中您可能没有引用该 JAR。
-
taskdef 找不到类 def.RepairTask 所需的类:org/apache/commons/io/input/BOMInputStream 使用类加载器 AntClassLoader[C:...\antTask.jar]。是的,它是第三方库。但它包含在生成的 antTask.jar 中,当我使用 eclipse 运行 ant build.xml(我编辑运行配置并添加缺少的 apache jar)时,一切正常,但我现在真的很想知道如何编写这进入 build.xml 所以它可以在没有 eclipse 的情况下工作