Ant部署應用程序
在前麵的章節中,我們已經學會了如何打包應用程序並將其部署到一個文件夾中。在這個例子中,我們打算把它更進一步。
我們要部署Web應用程序直接到應用程序的服務器的部署文件夾,然後我們將添加一些Ant目標來啟動和停止服務。讓我們繼續的Hello World傳真的Web應用程序。這是一個延續前一章,新元件在突出紅色
build.properties
# Ant properties for building the springapp appserver.home=c:\install\apache-tomcat-7.0.19 # for Tomcat 5 use $appserver.home}/server/lib # for Tomcat 6 use $appserver.home}/lib appserver.lib=${appserver.home}/lib deploy.path=${appserver.home}/webapps tomcat.manager.url=http://www.gitbook.net:8080/manager tomcat.manager.username=yiibai tomcat.manager.password=secret
build.xml
<?xml version="1.0"?> <project name="fax" basedir="." default="usage"> <property file="build.properties"/> <property name="src.dir" value="src"/> <property name="web.dir" value="war"/> <property name="javadoc.dir" value="doc"/> <property name="build.dir" value="${web.dir}/WEB-INF/classes"/> <property name="name" value="fax"/> <path id="master-classpath"> <fileset dir="${web.dir}/WEB-INF/lib"> <include name="*.jar"/> </fileset> <pathelement path="${build.dir}"/> </path> <target name="javadoc"> <javadoc packagenames="faxapp.*" sourcepath="${src.dir}" destdir="doc" version="true" windowtitle="Fax Application"> <doctitle><![CDATA[<h1>= Fax Application =</h1>]]></doctitle> <bottom><![CDATA[Copyright © 2011. All Rights Reserved.]]></bottom> <group title="util packages" packages="faxapp.util.*"/> <group title="web packages" packages="faxapp.web.*"/> <group title="data packages" packages="faxapp.entity.*:faxapp.dao.*"/> </javadoc> </target> <target name="usage"> <echo message=""/> <echo message="${name} build file"/> <echo message="-----------------------------------"/> <echo message=""/> <echo message="Available targets are:"/> <echo message=""/> <echo message="deploy --> Deploy application as directory"/> <echo message="deploywar --> Deploy application as a WAR file"/> <echo message=""/> </target> <target name="build" description="Compile main source tree java files"> <mkdir dir="${build.dir}"/> <javac destdir="${build.dir}" source="1.5" target="1.5" debug="true" deprecation="false" optimize="false" failonerror="true"> <src path="${src.dir}"/> <classpath refid="master-classpath"/> </javac> </target> <target name="deploy" depends="build" description="Deploy application"> <copy todir="${deploy.path}/${name}" preservelastmodified="true"> <fileset dir="${web.dir}"> <include name="**/*.*"/> </fileset> </copy> </target> <target name="deploywar" depends="build" description="Deploy application as a WAR file"> <war destfile="${name}.war" webxml="${web.dir}/WEB-INF/web.xml"> <fileset dir="${web.dir}"> <include name="**/*.*"/> </fileset> </war> <copy todir="${deploy.path}" preservelastmodified="true"> <fileset dir="."> <include name="*.war"/> </fileset> </copy> </target> <target name="clean" description="Clean output directories"> <delete> <fileset dir="${build.dir}"> <include name="**/*.class"/> </fileset> </delete> </target>
<!-- ============================================================ --> <!-- Tomcat tasks --> <!-- ============================================================ --> <path id="catalina-ant-classpath"> <!-- We need the Catalina jars for Tomcat --> <!-- * for other app servers - check the docs --> <fileset dir="${appserver.lib}"> <include name="catalina-ant.jar"/> </fileset> </path> <taskdef name="install" classname="org.apache.catalina.ant.InstallTask"> <classpath refid="catalina-ant-classpath"/> </taskdef> <taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask"> <classpath refid="catalina-ant-classpath"/> </taskdef> <taskdef name="list" classname="org.apache.catalina.ant.ListTask"> <classpath refid="catalina-ant-classpath"/> </taskdef> <taskdef name="start" classname="org.apache.catalina.ant.StartTask"> <classpath refid="catalina-ant-classpath"/> </taskdef> <taskdef name="stop" classname="org.apache.catalina.ant.StopTask"> <classpath refid="catalina-ant-classpath"/> </taskdef> <target name="reload" description="Reload application in Tomcat"> <reload url="${tomcat.manager.url}" username="${tomcat.manager.username}" password="${tomcat.manager.password}" path="/${name}"/> </target> </project>
在本練習中,我們使用Tomcat作為我們的應用服務器。首先,在構建屬性文件中,我們定義了一些附加屬性。
-
appserver.home應用指向安裝路徑到Tomcat應用服務器。
-
appserver.lib指向Tomcat的安裝文件夾中的庫文件。
-
deploy.path變量現在指向Tomcat中的web應用文件夾。
在Tomcat中的應用程序可以停止和startedusing Tomcat管理應用程序。也是在build.properties文件中指定的URL管理器應用程序,使用用戶名和密碼。接下來我們聲明一個新的CLASSPATH中包含catalina-ant.jar文件。這個jar文件是必需通過Apache Ant來執行Tomcat 任務。
catalina-ant.jar 文件提供了以下任務:
Properties | 描述 |
---|---|
InstallTask | Installs a web application. Class Name: org.apache.catalina.ant.InstallTask |
ReloadTask | Reload a web application. Class Name: org.apache.catalina.ant.ReloadTask |
ListTask | Lists all web applications. Class Name: org.apache.catalina.ant.ListTask |
StartTask | Starts a web application. Class Name: org.apache.catalina.ant.StartTask |
StopTask | Stops a web application. Class Name: org.apache.catalina.ant.StopTask |
ReloadTask | Reloads a web application without stopping. Class Name: org.apache.catalina.ant.ReloadTask |
重裝任務需要以下附加參數。
- 1)URL到管理器應用程序
2)用戶名重新啟動Web應用程序
3)密碼重新啟動Web應用程序重新啟動Web應用程序
4)名稱
讓我們發出的deploy-war命令的web應用程序複製到Tomcat的webapps文件夾中,然後讓我們重新加載該傳真的Web應用程序。下麵的結果是運行Ant文件的結果:
C:>ant deploy-war Buildfile: C:uild.xml BUILD SUCCESSFUL Total time: 6.3 seconds C:>ant reload Buildfile: C:uild.xml BUILD SUCCESSFUL Total time: 3.1 seconds
一旦上述任務運行時,Web應用程序部署和Web應用程序重新加載。