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平臺。