Ant - Déploiement d'applications

Dans le chapitre précédent, nous avons appris comment empaqueter une application et la déployer dans un dossier.

Dans ce chapitre, nous allons déployer l'application Web directement dans le dossier de déploiement du serveur d'applications, puis nous allons ajouter quelques cibles Ant pour démarrer et arrêter les services. Continuons avec leHello Worldapplication Web de télécopie. Ceci est une continuation du chapitre précédent, les nouveaux composants sont mis en évidence dansbold.

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>

Dans cet exemple, nous avons utilisé Tomcat comme serveur d'application. Tout d'abord, dans le fichier de propriétés de construction, nous avons défini des propriétés supplémentaires.

  • le appserver.home pointe vers le chemin d'installation vers le serveur d'applications Tomcat.

  • le appserver.lib pointe vers les fichiers de bibliothèque dans le dossier d'installation de Tomcat.

  • le deploy.path La variable pointe maintenant vers le dossier webapp dans Tomcat.

Les applications dans Tomcat peuvent être arrêtées et démarrées à l'aide de l'application de gestionnaire Tomcat. L'URL de l'application du gestionnaire, le nom d'utilisateur et le mot de passe sont également spécifiés dans le fichier build.properties. Ensuite, nous déclarons un nouveau CLASSPATH qui contient lecatalina-ant.jar. Ce fichier jar est requis pour exécuter les tâches Tomcat via Apache Ant.

Catalina-ant.jar fournit les tâches suivantes -

N ° Sr. Propriétés et description
1

InstallTask

Installe une application Web.

Nom de la classe: org.apache.catalina.ant.InstallTask

2

ReloadTask

Rechargez une application Web.

Nom de la classe: org.apache.catalina.ant.ReloadTask

3

ListTask

Répertorie toutes les applications Web.

Nom de la classe: org.apache.catalina.ant.ListTask

4

StartTask

Démarre une application Web.

Nom de la classe: org.apache.catalina.ant.StartTask

5

StopTask

Arrête une application Web.

Nom de la classe: org.apache.catalina.ant.StopTask

6

ReloadTask

Recharge une application Web sans s'arrêter.

Nom de la classe: org.apache.catalina.ant.ReloadTask

La tâche de rechargement nécessite les paramètres supplémentaires suivants -

  • URL de l'application du gestionnaire
  • Nom d'utilisateur pour redémarrer l'application Web
  • Mot de passe pour redémarrer l'application Web
  • Nom de l'application Web à redémarrer

Laissez-nous publier le deploy-warpour copier la webapp dans le dossier Tomcat webapps, puis rechargerons l'application Fax Web. Le résultat suivant est le résultat de l'exécution du fichier 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

Une fois la tâche ci-dessus exécutée, l'application Web est déployée et l'application Web est rechargée.