我的脚本如下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="Getting from FTP" default="info" basedir=".">
<target name="info">
<property name="testfolder" value="MyTestFolderPath" />
<echo>Hello World - Welcome to Apache Ant!</echo>
<echo>Java version: ${ant.java.version}</echo>
<echo>Ant Version: ${ant.version}</echo>
<echo>Base Dir: "${basedir}"</echo>
<mkdir dir="${testfolder}ant-test"/>
<classpath>
<fileset dir="${basedir}" includes="*.jar" />
</classpath>
<ftp action="get"
server="my.server.location.somewhere"
userid="username"
password="password"
remotedir="/path/on/my/server"
verbose="yes"
>
<fileset dir="${testfolder}ant-test">
<include name="***" />
</fileset>
</ftp>
</target>
</project>
我正在eclipse上编写这个文件,并将commons-net-3.3.jar文件放在我的工作区文件夹中。这里是AutomateDownload。但是,当我运行脚本时,我会得到以下错误:
Buildfile: mydriveon_servermy_workspaceftpautoAutomateDownloadbuild.xml
info:
[echo] Hello World - Welcome to Apache Ant!
[echo] Java version: 1.8
[echo] Ant Version: Apache Ant(TM) version 1.9.4 compiled on April 29 2014
[echo] Base Dir: "mydriveon_servermy_workspaceftpautoAutomateDownload"
BUILD FAILED
mydriveon_servermy_workspaceftpautoAutomateDownloadbuild.xml:11: Problem: failed to create task or type classpath
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
它在我的本地机器上运行,因为我把.jar文件保存在ANT_HOME的lib文件夹中。它运行得很好。但现在,当我在服务器上运行它时,我面临着错误。有人能帮我解决我遇到的问题吗?你能详细告诉我,真正的问题是什么吗?我为什么要面对这样的问题?感谢:)
没有名为"classpath"的ANT任务。这就是ANT抛出错误的原因。
我怀疑你想做的是创建一个路径引用?
<path id="proj.path">
<fileset dir="${basedir}" includes="*.jar" />
</path>
但是。。。ftp任务不支持类路径引用。。。因此,最好将依赖性jar放在"$HOME/.ant/lib"目录中。
我使用的一个技巧是使用一个特殊的ANT目标下载和安装依赖项:
<target name="install-dependencies">
<mkdir dir="${user.home}/.ant/lib"/>
<get dest="${user.home}/.ant/lib/commons-net.jar" src="http://search.maven.org/remotecontent?filepath=commons-net/commons-net/3.3/commons-net-3.3.jar"/>
</target>
目标只需要在每个构建机器上运行一次
$ ant install-dependencies