- Apache ANT 教程
- ANT - 主页
- ANT - 简介
- ANT - 环境设置
- ANT - 构建文件
- ANT - 属性任务
- ANT - 属性文件
- ANT - 数据类型
- ANT - 构建项目
- ANT - 构建文档
- ANT - 创建 JAR 文件
- ANT - 创建 WAR 文件
- ANT - 打包应用程序
- ANT - 部署应用程序
- ANT - 执行 Java 代码
- ANT - Eclipse 集成
- ANT - JUnit 集成
- ANT - 扩展 Ant
- Apache ANT 实用示例
- ANT - 使用 Token
- ANT - 使用命令行参数
- ANT - 使用 If Else 参数
- ANT - 自定义组件
- ANT - 监听器和记录器
- Apache ANT 资源
- ANT - 快速指南
- ANT - 有用资源
- ANT - 讨论
Ant - 部署应用程序
在上一章中,我们学习了如何打包应用程序并将其部署到文件夹中。
在本章中,我们将把 Web 应用程序直接部署到应用程序服务器的部署文件夹,然后添加一些 Ant 目标来启动和停止服务。
让我们继续使用 **Hello World** 传真 Web 应用程序。这是上一章的延续;新组件以 **粗体** 高亮显示。
build.properties
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=https://tutorialspoint.com:8080/manager tomcat.manager.username=tutorialspoint tomcat.manager.password=secret
build.xml
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 作为我们的应用程序服务器。
首先,在 build 属性文件中,我们定义了一些其他属性,如下所述:
**appserver.home** 指向 Tomcat 应用程序服务器的安装路径。
**appserver.lib** 指向 Tomcat 安装文件夹中的库文件。
**deploy.path** 变量现在指向 Tomcat 中的 webapp 文件夹。
Tomcat 中的应用程序可以使用 Tomcat 管理器应用程序停止和启动。管理器应用程序的 URL、用户名和密码也指定在 build.properties 文件中。
接下来,我们声明一个包含 **catalina-ant.jar** 的新 CLASSPATH。此 jar 文件需要通过 Apache Ant 执行 Tomcat 任务。
任务
catalina-ant.jar 提供以下任务:
序号 | 属性和描述 |
---|---|
1 | InstallTask 安装 Web 应用程序。类名:org.apache.catalina.ant.InstallTask |
2 | ReloadTask 重新加载 Web 应用程序。类名:org.apache.catalina.ant.ReloadTask |
3 | ListTask 列出所有 Web 应用程序。类名:org.apache.catalina.ant.ListTask |
4 | StartTask1 启动 Web 应用程序。类名:org.apache.catalina.ant.StartTask |
5 | StopTask 停止 Web 应用程序。类名:org.apache.catalina.ant.StopTask |
6 | ReloadTask 在不停止的情况下重新加载 Web 应用程序。类名:org.apache.catalina.ant.ReloadTask |
reload 任务需要以下附加参数:
管理器应用程序的 URL。
重新启动 Web 应用程序的用户名。
重新启动 Web 应用程序的密码。
要重新启动的 Web 应用程序的名称。
让我们发出 **deploy-war** 命令将 webapp 复制到 Tomcat webapps 文件夹,然后让我们重新加载传真 Web 应用程序。以下结果是运行 Ant 文件的结果:
C:\>ant deploy-war Buildfile: C:\build.xml BUILD SUCCESSFUL Total time: 6.3 seconds C:\>ant reload Buildfile: C:\build.xml BUILD SUCCESSFUL Total time: 3.1 seconds
运行上述任务后,Web 应用程序将被部署并重新加载。