Ant遠程部署到Tomcat

本文涉及的工具

Eclipse4.5.2java

Ant1.9.6(Eclipse自帶的插件)web

jsch-0.1.53(直接點擊能夠打開下載頁面)api

具體步驟以下

1.建立build.xml文件

在項目中添加build.xml文件,build.xml是ant默認的文件名,能夠修改成其餘的名字,不影響Ant腳本的執行,以下圖,build.xml和build-webdemo.xml均可以做爲Ant腳本。tomcat

2.修改build.xml文件

能夠參考下面的文件,根據具體狀況修改遠程主機帳號密碼和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>

3.測試效果

編輯完build.xml文件後,右鍵執行eclipse

默認執行的war,我是考慮防止第一次使用的時候誤操做,直接覆蓋了遠程服務器的項目,若是肯定遠程Tomcat的目錄能夠直接覆蓋,在publish前面勾上,而後執行就能夠了。ssh

因爲依賴jsch.jar文件,因此運行的時候須要將該文件加入到ant的classpath中,見上圖,webapp

或者能夠配置Ant的運行環境。

配置完以後就能夠直接點擊run,控制檯會提示你進度,祝你好運。

4.總結

若是須要頻繁部署到遠程服務器,使用這個Ant的腳本仍是比較好用的,輕量級,若是是大型團隊能夠考慮使用其餘的Paas平臺。

相關文章
相關標籤/搜索