位置:首頁 > Java技術 > ANT > 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.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應用程序重新加載。