上面的文檔介紹了如何利用 HTTP 請求來執行 Manager 的命令。除此之外,Tomcat 還專為 Ant(1.4 版或更新版本)構建工具準備了一套方便的任務定義。為了使用這些命令,必須執行下面這些操作:
為了在 Ant 中使用自定義任務,必須首先用 元素來聲明它們,因而 build.xml 文件應類似如下這樣:
<project name="My Application" default="compile" basedir=".">
<!-- Configure the directory into which the web application is built -->
<property name="build" value="${basedir}/build"/>
<!-- Configure the context path for this application -->
<property name="path" value="/myapp"/>
<!-- Configure properties to access the Manager application -->
<property name="url" value="http://localhost:8080/manager/text"/>
<property name="username" value="myusername"/>
<property name="password" value="mypassword"/>
<!-- Configure the custom Ant tasks for the Manager application -->
<taskdef name="list" classname="org.apache.catalina.ant.ListTask"/>
<taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"/>
<taskdef name="start" classname="org.apache.catalina.ant.StartTask"/>
<taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask"/>
<taskdef name="stop" classname="org.apache.catalina.ant.StopTask"/>
<taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask"/>
<taskdef name="resources" classname="org.apache.catalina.ant.ResourcesTask"/>
<typedef name="sessions" classname="org.apache.catalina.ant.SessionsTask"/>
<taskdef name="findleaks" classname="org.apache.catalina.ant.FindLeaksTask"/>
<typedef name="vminfo" classname="org.apache.catalina.ant.VminfoTask"/>
<typedef name="threaddump" classname="org.apache.catalina.ant.ThreaddumpTask"/>
<typedef name="sslConnectorCiphers" classname="org.apache.catalina.ant.SslConnectorCiphersTask"/>
<!-- Executable Targets -->
<target name="compile" description="Compile web application">
<!-- ... construct web application in ${build} subdirectory, and
generated a ${path}.war ... -->
</target>
<target name="deploy" description="Install web application"
depends="compile">
<deploy url="${url}" username="${username}" password="${password}"
path="${path}" war="file:${build}${path}.war"/>
</target>
<target name="reload" description="Reload web application"
depends="compile">
<reload url="${url}" username="${username}" password="${password}"
path="${path}"/>
</target>
<target name="undeploy" description="Remove web application">
<undeploy url="${url}" username="${username}" password="${password}"
path="${path}"/>
</target>
</project>
注意:上面的資源任務定義將覆蓋 Ant 1.7 中所添加的資源數據類型。如果你希望使用這些資源數據類型,需要使用 Ant 命名空間支持,將 Tomcat 的任務分配到它們自己的命名空間中。
現在,可以執行類似 ant deploy 這樣的命令將應用部署到 Tomcat 的一個運行實例上,或者利用 ant reload 通知 Tomcat 重新加載應用。另外還需注意的是,在這個 build.xml 文件中,多數比較有價值的屬性值都是可以被可替換的,因而可以利用命令行方式來重寫這些值。比如,考慮到在 build.xml 文件中包含真正的管理員密碼是非常危險的,可以通過一些命令來忽略密碼屬性,如下所示:
ant -Dpassword=secret deploy