Apache Ant 的 FTP Task 需要依赖 apache common-net 包。如果需要使用 FTP 任务, 需要将 common-net 包放到 $ANT_HOME/lib 下。
如果是 Ubuntu 用户,并且用 apt-get 安装的 Ant, 可以使用如下脚本:
wget http://www.fayea.com/apache-mirror//commons/net/binaries/commons-net-3.1-bin.zip unzip commons-net-3.1-bin.zip sudo cp commons-net-3.1/commons-net-3.1.jar /usr/share/ant/lib/ rm -rf commons-net-3.1 rm -rf commons-net-3.1-bin.zip
Gist: https://gist.github.com/4030368
如果是 Windows 用户, 需要自行下载 apache common-net 3.1 包, 并且将 commons-net-3.1.jar 放到 %ANT_HOME%/lib 下
安装好后,便可以使用FTP指令:
这个是远程发布项目的脚本
<?xml version="1.0" encoding="utf-8" ?> <project name="cas" default="rupload"> <description>The cas project ant script tools</description> <property environment="env"/> <property name="basedir" value="." /> <property name="tools.ruby" value="${basedir}/tools/ruby"/> <property name="ftp.host" value="192.168.1.42"/> <property name="ftp.username" value="tomcat"/> <property name="ftp.password" value="tomcat"/> <property name="ftp.remotedir" value="webapps"/> <property name="r.cmd.start" value="startup" /> <property name="r.cmd.stop" value="shutdown" /> <target name="rstart" description="start remote tomcat" > <exec executable="ruby"> <arg value="${tools.ruby}/rtomcat.rb"/> <arg value="${r.cmd.start}"/> </exec> </target> <target name="rstop" description="start remote tomcat" > <exec executable="ruby"> <arg value="${tools.ruby}/rtomcat.rb"/> <arg value="${r.cmd.stop}"/> </exec> </target> <target name="rrmfiles"> <ftp action="del" userid="${ftp.username}" password="${ftp.password}" server="${ftp.host}"> <fileset> <include name="${ftp.remotedir}/${ant.project.name}/**"/> <include name="${ftp.remotedir}/${ant.project.name}/**/*"/> </fileset> </ftp> </target> <target name="rrm" depends="rrmfiles" description="rm project folder from remote"> <ftp action="rmdir" userid="${ftp.username}" password="${ftp.password}" server="${ftp.host}" remotedir="${ftp.remotedir}"> <fileset> <include name="${ant.project.name}"/> <include name="${ant.project.name}/**"/> </fileset> </ftp> </target> <target name="rcas" depends="rrm" description="create a cas folder on server" > <ftp action="mkdir" userid="${ftp.username}" password="${ftp.password}" server="${ftp.host}" remotedir="${ftp.remotedir}/${ant.project.name}"> </ftp> </target> <target name="rupload" depends="rcas" description="upload vas file to remote ftp" > <ftp userid="${ftp.username}" password="${ftp.password}" server="${ftp.host}" remotedir="${ftp.remotedir}/${ant.project.name}"> <fileset dir="${basedir}"> <excludesfile name=".project"/> </fileset> </ftp> </target> </project>