Ant部署应用程序 - 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.yiibai.com: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应用程序重新加载。