使用ant對tomcat中的網站進行部署和更新,簡單的方案就是把webapps下對應的目錄和war文件刪除,然后復制進新的war就可以了。
還有一種方案就是使用tomcat中提供的catalina-ant.jar里面提供了ant操作tomcat的一些操作
首先要在tomcat-users.xml 保證你有manager-scrpit的權限,注意不是manager-gui(因為這個權限對跨站攻擊進行了保護,使用ANT訪問會出現403錯誤)
然后你需要一個tomcatTasks.properties文件,內容如下(注意每行的結尾沒有任何空格)
1: deploy=org.apache.catalina.ant.DeployTask
2: undeploy=org.apache.catalina.ant.UndeployTask
3: reload=org.apache.catalina.ant.ReloadTask
4: start=org.apache.catalina.ant.StartTask
5: stop=org.apache.catalina.ant.StopTask
6: list=org.apache.catalina.ant.ListTask
然后在你的配置文件中加入以下內容
1: <path id="catalina-ant-classpath">
2: <fileset dir="${tomcat.home}/lib">
3: <include name="catalina-ant.jar"/>
4: <include name="tomcat-coyote.jar"/>
5: <include name="tomcat-util.jar"/>
6: </fileset>
7: <fileset dir="${tomcat.home}/bin">
8: <include name="tomcat-juli.jar"/>
9: </fileset>
10: </path>
11:
12: <taskdef file="tomcatTasks.properties">
13: <classpath refid="catalina-ant-classpath"/>
14: </taskdef>
還有幾個屬性需要設置,大家自己完善其中需要注意的是tomcat.manager.url,可以參考下面
1: tomcat.manager.url=http://127.0.0.1:8080/manager/text
這樣就可以參考以下代碼,使用tomcat的API操作tomcat了
1: <target name="install" description="Install application in Tomcat" depends="packWar">
2: <deploy url="${tomcat.manager.url}"
3: username="${tomcat.manager.username}"
4: password="${tomcat.manager.password}"
5: path="/${webapp.name}" war="${warFilePath}" />
6: </target>
7:
8: <target name="remove" description="Remove application from Tomcat">
9: <undeploy url="${tomcat.manager.url}"
10: username="${tomcat.manager.username}"
11: password="${tomcat.manager.password}"
12: path="/${webapp.name}" />
13: </target>
14:
15: <target name="reload" description="Reload application in Tomcat">
16: <reload url="${tomcat.manager.url}"
17: username="${tomcat.manager.username}"
18: password="${tomcat.manager.password}"
19: path="/${webapp.name}" />
20: </target>
21:
22: <target name="start" description="Start Tomcat application">
23: <start url="${tomcat.manager.url}"
24: username="${tomcat.manager.username}"
25: password="${tomcat.manager.password}"
26: path="/${webapp.name}" />
27: </target>
28:
29: <target name="stop" description="Stop Tomcat application">
30: <stop url="${tomcat.manager.url}"
31: username="${tomcat.manager.username}"
32: password="${tomcat.manager.password}"
33: path="/${webapp.name}" />
34: </target>
35:
36: <target name="list" description="List Tomcat applications">
37: <list url="${tomcat.manager.url}"
38: username="${tomcat.manager.username}"
39: password="${tomcat.manager.password}" />
40: </target>
但是
windows下的tomcat7會因為內存泄露的問題而有時候文件刪除不掉(使用catalina-ant也會undeploy失敗)!!!
比較極限的解決方案是是關閉tomcat,刪除文件后在重啟。相應的ant配置如下
1: <target name="stop_tomcat">
2: <echo>停止tomcat</echo>
3: <exec executable="cmd" dir="${tomcat.home}/bin" failonerror="false"
4: output="${log.file}" append="true" >
5: <env key="CATALINA_HOME" path="${tomcat.home}"/>
6: <arg value="/c shutdown.bat" />
7: </exec>
8: </target>
9:
10: <target name="start_tomcat">
11: <echo>啟動tomcat</echo>
12: <exec executable="cmd" dir="${tomcat.home}/bin" failonerror="false"
13: output="${log.file}" append="true" >
14: <env key="CATALINA_HOME" path="${tomcat.home}"/>
15: <arg value="/c startup.bat" />
16: </exec>
17: </target>
還有一個比較好的做法是修改tomcat的配置修改conf/context.xml中的內容修改成
1: <Context antiResourceLocking="true">