Ant - Bereitstellen von Anwendungen

Im vorherigen Kapitel haben wir gelernt, wie eine Anwendung gepackt und in einem Ordner bereitgestellt wird.

In diesem Kapitel werden wir die Webanwendung direkt im Bereitstellungsordner des Anwendungsservers bereitstellen und dann einige Ant-Ziele hinzufügen, um die Dienste zu starten und zu stoppen. Fahren wir mit dem fortHello WorldFax-Webanwendung. Dies ist eine Fortsetzung des vorherigen Kapitels, in dem die neuen Komponenten hervorgehoben sindbold.

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.tutorialspoint.com:8080/manager
tomcat.manager.username = tutorialspoint
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>

In diesem Beispiel haben wir Tomcat als Anwendungsserver verwendet. Zunächst haben wir in der Build-Eigenschaftendatei einige zusätzliche Eigenschaften definiert.

  • Das appserver.home verweist auf den Installationspfad zum Tomcat-Anwendungsserver.

  • Das appserver.lib verweist auf die Bibliotheksdateien im Tomcat-Installationsordner.

  • Das deploy.path Die Variable zeigt jetzt auf den Webapp-Ordner in Tomcat.

Anwendungen in Tomcat können mithilfe der Tomcat-Manager-Anwendung gestoppt und gestartet werden. Die URL für die Manageranwendung, der Benutzername und das Kennwort werden ebenfalls in der Datei build.properties angegeben. Als nächstes deklarieren wir einen neuen CLASSPATH, der das enthältcatalina-ant.jar. Diese JAR-Datei wird benötigt, um Tomcat-Aufgaben über Apache Ant auszuführen.

Die Catalina-Ant.JAR bietet die folgenden Aufgaben:

Sr.Nr. Eigenschaften & Beschreibung
1

InstallTask

Installiert eine Webanwendung.

Klassenname: org.apache.catalina.ant.InstallTask

2

ReloadTask

Laden Sie eine Webanwendung neu.

Klassenname: org.apache.catalina.ant.ReloadTask

3

ListTask

Listet alle Webanwendungen auf.

Klassenname: org.apache.catalina.ant.ListTask

4

StartTask

Startet eine Webanwendung.

Klassenname: org.apache.catalina.ant.StartTask

5

StopTask

Stoppt eine Webanwendung.

Klassenname: org.apache.catalina.ant.StopTask

6

ReloadTask

Lädt eine Webanwendung neu, ohne anzuhalten.

Klassenname: org.apache.catalina.ant.ReloadTask

Die Aufgabe zum erneuten Laden erfordert die folgenden zusätzlichen Parameter:

  • URL zur Manageranwendung
  • Benutzername zum Neustarten der Webanwendung
  • Kennwort zum Neustart der Webanwendung
  • Name der Webanwendung, die neu gestartet werden soll

Lassen Sie uns das herausgeben deploy-warBefehl zum Kopieren der Webanwendung in den Ordner "Tomcat-Webanwendungen" und anschließendes erneutes Laden der Fax-Webanwendung. Das folgende Ergebnis ist das Ergebnis der Ausführung der Ant-Datei:

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

Sobald die obige Aufgabe ausgeführt wurde, wird die Webanwendung bereitgestellt und die Webanwendung neu geladen.