【发布时间】:2010-10-03 02:54:19
【问题描述】:
我想在 ant 中使用 FTP 任务,我找到了合适的 jar 文件并且一切正常。我已将 jar 文件与构建中使用的其他文件一起放在“libs”目录中。唯一的问题是用户必须运行“ant -lib commons-net-ftp-2.0.jar”来进行构建;我真的更希望可以在没有参数的情况下运行“ant”。
阅读ant optional tasks intallation page,我发现有五种方法可以在ant 中加载额外的库,但没有一种是我真正想要的。我不想强迫用户对其系统进行任何修改以运行此任务;应该可以从我们产品源文件夹内的“libs”目录中加载它。所以这意味着设置全局 CLASSPATH 也被淘汰了(无论如何这都是个坏主意)。
最后一个选项,如文档中所述,是首选方法...从构建脚本本身单独加载 jarfile。我过去曾使用 ant-contrib 任务和 JUnit 完成此操作,并且想在这里执行此操作,但我不知道如何完成此操作。 FTP 任务不支持嵌套的类路径元素,而且我不知道通过 taskdef 加载该库所需的 XML 资源。如何从 ant 中加载库?
编辑:为了回答到目前为止已在此处发布的答案和问题,我使用的是 ant 1.7.1。制作一个 ftp taskdef 肯定是行不通的;引发以下错误:
构建失败 /my/path/build.xml:13: taskdef 类 org.apache.tools.ant.taskdefs.optional.net.FTP 找不到
也许这是因为类名错误。如果我只有一个 jarfile,我该如何找到我应该使用的类名?它没有在任何地方记录,我在 jar 本身中找不到任何类似于该路径的东西。
【问题讨论】:
-
我认为 ftp 所依赖的另一个任务可以完成,但我不太确定 - 我必须尝试一下。
-
对我来说也一样。对于外部任务,我通常在 taskdef 中包含一个类路径,但是对于一些内部可选任务(ssh、scp、scriptdef),我没有找到比让用户将 JAR 复制到 /home/.ant/lib 更好的解决方案: -S
-
你用的是什么版本的 Ant ?
-
我意识到你已经有一段时间没有发布这个了 :-) 但我想知道你是否会在项目中使用三叶草。
-
不,我不是。为什么要问?