Eclipse4.5.2java
Ant1.9.6(Eclipse自带的插件)web
jsch-0.1.53(直接点击能够打开下载页面)api
在项目中添加build.xml文件,build.xml是ant默认的文件名,能够修改成其余的名字,不影响Ant脚本的执行,以下图,build.xml和build-webdemo.xml均可以做为Ant脚本。tomcat
能够参考下面的文件,根据具体状况修改远程主机帐号密码和tomcat部署的路径服务器
请肯定远程的Tomcat中包含相应的目录,例如本例中的/opt/tomcat7/webapps/demoapp
否则会提示目录不存在,特别是webapps后面的路径,必须存在,若是不存在,须要先手动建立相应的文件夹,固然你也能够完善一下Ant脚本,先执行一个远程命令,建立相应的文件夹。less
<?xml version="1.0" encoding="UTF-8"?> <!-- 使用该脚本是用有些前置条件。 本脚本适用于eclipse或者myeclipse环境中使用 编译文件的默认输出目录为 WebContent/WEB-INF/classes 若是不肯定,能够先查看项目java build path 的default output folder 请肯定项目已经build过,或者执行该ant脚本以前手动执行build 执行前,请肯定是否使用jdk1.7编译的class代码 能够根据项目的名字不一样,修改property里面的value值 --> <project name="demo" default="war"> <property name="war.name" value="${ant.project.name}"/> <property name="jar.name" value="${ant.project.name}-api.jar"/> <property name="tomcat.home" value="/opt/tomcat7"/> <property name="tomcat.webapps.context" value="${ant.project.name}"/> <property name="remote.host" value="192.168.1.110"/> <!-- 格式化时间 --> <tstamp> <format property="fdate" pattern="yyyyMMddHHmmss"/> </tstamp> <available file="./WebContent/WEB-INF/classes" property="pathisexit" type="dir"/> <!-- 生成war文件 --> <target name="war" depends="init.test"> <delete file="${war.name}.war" /> <war destfile="${war.name}.war" webxml="./WebContent/WEB-INF/web.xml"> <fileset dir="./WebContent"> <!-- 根据须要能够适当的增减文件夹,里面是一个例子,能够参考使用,若是不配置,就是默认WebContent下面的全部文件夹和文件 <include name="WEB-INF/classes/**/*" /> <exclude name="WEB-INF/classes/**/*.class" /> <include name="WEB-INF/lib/**/*" /> <include name="WEB-INF/serviceconf/**/*" /> --> </fileset> </war> </target> <!-- 远程传输文件夹,须要添加第三方的jar文件才能支持 --> <target name="remote-deploy" depends="init.test"> <scp todir="root@${remote.host}:${tomcat.home}/webapps/${tomcat.webapps.context}" password="0EY*r6Wi" trust="true"> <fileset dir="./WebContent"></fileset> </scp> </target> <!-- 执行脚本重启tomcat 主意tomcat.home的属性,须要配置正确的tomcat路径 --> <target name="tomcat.restart"> <sshexec command="${tomcat.home}/bin/catalina.sh stop -force;ps -ef | grep ${tomcat.home}| grep -v grep|awk '{print $2}'|xargs kill -9;${tomcat.home}/bin/catalina.sh start" host="${remote.host}" username="root" password="0EY*r6Wi" trust="true"/> </target> <target name="publish"> <!-- 先分发软件 --> <antcall target="remote-deploy" /> <!-- 而后重启tomcat --> <antcall target="tomcat.restart" /> </target> <!-- 备份当前文件 --> <target name="bakwebapp"> <echo>cd ${tomcat.home}/webapps;tar -zcvf ${tomcat.webapps.context}.${fdate}.tar.gz ${tomcat.webapps.context}</echo> <!-- 执行备份语句 --> <sshexec command="cd ${tomcat.home}/webapps;tar -zcvf ${tomcat.webapps.context}.${fdate}.tar.gz ${tomcat.webapps.context}" host="${remote.host}" username="root" password="0EY*r6Wi" trust="true"/> </target> <target name="init.test" unless="pathisexit"> <fail message="classes文件夹不存在,检查你的IDE的构建路径,本脚本仅适用于IDE环境或者你手动将代码编译到classes文件夹中"/> </target> </project>
编辑完build.xml文件后,右键执行eclipse
默认执行的war,我是考虑防止第一次使用的时候误操做,直接覆盖了远程服务器的项目,若是肯定远程Tomcat的目录能够直接覆盖,在publish前面勾上,而后执行就能够了。ssh
因为依赖jsch.jar文件,因此运行的时候须要将该文件加入到ant的classpath中,见上图,webapp
或者能够配置Ant的运行环境。
配置完以后就能够直接点击run,控制台会提示你进度,祝你好运。
若是须要频繁部署到远程服务器,使用这个Ant的脚本仍是比较好用的,轻量级,若是是大型团队能够考虑使用其余的Paas平台。