Ant - Applications d'emballage

Nous avons appris les différents aspects de Ant en utilisant le Hello World Application Web de télécopie en morceaux.

Il est maintenant temps de tout rassembler pour créer un fichier build.xml complet et complet. Considérerbuild.properties et build.xml fichiers comme suit -

build.properties

deploy.path = c:\tomcat6\webapps

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>
</project>

Dans cet exemple -

  • Nous déclarons d'abord le chemin du dossier webapps dans Tomcat dans le fichier de propriétés de construction en tant que deploy.path variable.

  • Nous déclarons également le dossier source des fichiers java dans le src.dir variable.

  • Ensuite, nous déclarons le dossier source des fichiers Web dans le web.dir variable. javadoc.dir est le dossier pour stocker la documentation java, et build.dir est le chemin pour stocker les fichiers de sortie de construction.

  • Ensuite, nous déclarons le nom de l'application Web, qui est fax dans notre cas.

  • Nous définissons également le chemin de la classe maître qui contient les fichiers JAR présents dans le dossier WEB-INF / lib du projet.

  • Nous incluons également les fichiers de classe présents dans le build.dir dans le chemin de la classe de maître.

  • La cible Javadoc produit le javadoc requis pour le projet et la cible d'utilisation est utilisée pour imprimer les cibles communes présentes dans le fichier de construction.

L'exemple ci-dessus montre deux cibles de déploiement: deploy et deploywar.

La cible de déploiement copie les fichiers du répertoire Web vers le répertoire de déploiement en préservant l'horodatage de la dernière modification. Ceci est utile lors du déploiement sur un serveur prenant en charge le déploiement à chaud.

La cible propre efface tous les fichiers précédemment créés.

La cible deploywar crée le fichier war, puis copie le fichier war dans le répertoire de déploiement du serveur d'applications.