利用ant將Web項目部署至遠程Tomcat


首先介紹下適用情形,Tomcat服務器位於另一台主機,同時數據庫也在該主機之上,在將項目部署到遠程Tomcat上之前自己一直是適用本地Tomcat進行測試的,但由於需要執行shell腳本,所以需要將項目部署到遠程服務器上。

遠程計算機環境:CentOS Tomcat6 mysql jdk1.6.0

本地環境:Windows7 MyEclipse8.5(已經附帶了Ant插件) jdk1.6.0 

變量約定(需要根據你的安裝情況代入具體值): CATALINA_HOME="/workspace/apache-tomcat-6.0.24"  (遠程tomcat的安裝路徑)  ANT_HOME="C:\Users\xuyongjia\AppData\Local\Genuitec\Common\plugins\org.apache.ant_1.7.1.v20090120-1145"(本地MyEclipse的ANT插件目錄)

 部署至遠程Tomcat的方法有兩種:手動上傳部署和利用腳本自動部署(當然,本質是一種,只是根據手續繁簡這么分)。這兩種方法的第一步都需要向Tomcat的配置文件添加可以遠程上傳項目的賬號。

1.向Tomcat添加可以遠程上傳項目的賬號

 需要編輯$CATALINA_HOME/config/tomcat-users.xml,加入新用戶信息,例如 <user name="forupload" password="forupload" roles="manager" />,修改后重啟Tomcat。tomcat-users.xml修改后如圖(我添加了兩個,一個就足夠了):

 

 重啟Tomcat后,遠程訪問 http://{遠程服務器ip:port}/manager/html,我所需訪問的是http://192.168.1.126:8080/manager/html,這時會需要填入上傳用戶的用戶名和密碼,輸入剛才所添加的用戶名密碼,如圖:

如果可以正常跳轉,就完成了服務器端的配置。

2.上傳Web項目至遠程Tomcat:

(1)方式一,手動上傳(不使用Ant,直接上傳war):

a.在MyEclipse中,右鍵項目->Export(導出)->Java EE(如果有EJB貌似要選擇EAR,由於自己沒有使用EJB所以直接選擇了WAR)->WAR FILE->Next->選擇要導出的項目->選擇導出地址->Finish;

b.在成功跳轉http://192.168.1.126:8080/manager/html(需要修改成你的IP、port)后,在該頁面的下方有一處“WAR file to deploy”,選擇剛才導出的文件並點擊“Deploy”按鈕,點擊后,如果在網頁的上部沒有出錯信息,且在上傳的項目已在“Applications”的列表中,就說明部署成功,效果如圖:

c.輸入連接,該項目已可正常訪問:

 

(2)方式2,利用Ant腳本上傳:

 

a.將$CATALINA_HOME/lib/catalina-ant.jar復制到本地的$ANT_HOME/lib目錄下(可以直接在本地備一份Tomcat,方便使用,並不一定非從服務器拷貝);

b.將該catalina-ant.jar添加到MyEclipse的ant的classpath中(windows-->preferences-->Ant-->runtime-->classpath->Global Entries->Add External JARs),效果如圖:

c.在項目的根目錄下新建build.xml文件,並填入內容。

其中有幾處需要按自己的項目進行修改:

  • path:用於回頭訪問該項目的后綴路徑:  http://ip:port/path
  • url:遠程Tomcat的管理頁面路徑 http://ip:port/manager
  • username、password 這個是填寫你所設的上傳用戶的賬號和密碼
<project name="TestWeb" default="redeploy" basedir=".">
 
<!-- Configure the directory into which the web application is built -->
<property name="build" value="${basedir}/WebRoot/WEB-INF/classes" />
<property name="dist.dir" value="${basedir}/dist" />
 
<!-- Configure the context path for this application -->
<property name="path" value="/TestWeb" />
 
<!-- Configure properties to access the Manager application -->
<property name="url" value="http://192.168.1.126:8080/manager" />
<property name="username" value="forupload" />
<property name="password" value="forupload" />
 
<!-- Configure the custom Ant tasks for the Manager application -->
    <target name="_def_tomcat_tasks">           
        <!-- tasks: deploy,undeploy,reload,stop,start,list,roles,resources -->          
        <taskdef name="deploy"    classname="org.apache.catalina.ant.DeployTask" />           
        <taskdef name="list"      classname="org.apache.catalina.ant.ListTask" />           
        <taskdef name="reload"    classname="org.apache.catalina.ant.ReloadTask" />           
        <taskdef name="resources" classname="org.apache.catalina.ant.ResourcesTask" />  
        <taskdef name="roles"     classname="org.apache.catalina.ant.RolesTask" />           
        <taskdef name="start"     classname="org.apache.catalina.ant.StartTask" />          
        <taskdef name="stop"      classname="org.apache.catalina.ant.StopTask" />           
        <taskdef name="undeploy"  classname="org.apache.catalina.ant.UndeployTask" />   
</target> 
 
<!-- Executable Targets -->

<target name="compile" description="WebSip manage">
    <mkdir dir="${dist.dir}"/> 
    <war destfile="${dist.dir}/TestWeb.war" webxml="WebRoot/WEB-INF/web.xml">
        <classes dir="WebRoot/WEB-INF/classes" />
         <fileset dir="WebRoot" excludes="WEB-INF/**" />
         <lib dir="WebRoot/WEB-INF/lib" />
    </war>
</target>
 
<target name="redeploy" description="Remove and Install web application" depends="_def_tomcat_tasks">   
    <antcall target="undeploy"/>         
    <antcall target="deploy"/>   
</target> 
    
    
<target name="deploy" description="Install web application" depends="_def_tomcat_tasks,compile">
    <deploy url="${url}" username="${username}" password="${password}" path="${path}" war="${dist.dir}/TestWeb.war" />
</target>
 
<target name="undeploy" description="Remove web application" depends="_def_tomcat_tasks">
    <undeploy url="${url}" username="${username}" password="${password}" path="${path}" />
</target>
    
<target name="reload" description="Reload web application" depends="_def_tomcat_tasks,compile">     
    <reload  url="${url}" username="${username}" password="${password}" path="${path}"/>  
</target> 
    
</project>

在MyEclipse中右鍵build.xml->Run as->Ant Build,如果看成功消息,就說明成功部署了,如圖:

當對項目做出修改后(要先Build Project,或者Build Automatically),重新右鍵build.xml->Run as即可。

 

總結下:第一種方法適合偶爾需要部署項目的情況,第二種適合開發時需要經常重新部署項目的情況 。

 

  

本篇博文參考了:

http://www.24xuexi.com/w/2011-05-27/90459.html

http://code.google.com/p/rapid-framework/source/browse/trunk/rapid-framework/build-tomcat-deploy.xml?r=3657


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM