Ant - Projets de construction

Maintenant que nous avons appris les types de données dans Ant, il est temps de mettre ces connaissances en action. Nous allons construire un projet dans ce chapitre. Le but de ce chapitre est de construire un fichier Ant qui compile les classes java et les place dans le dossier WEB-INF \ classes.

Considérez la structure de projet suivante -

  • Les scripts de base de données sont stockés dans le db dossier.

  • Le code source java est stocké dans le src dossier.

  • Les images, js, META-INF, styles (css) sont stockés dans le war dossier.

  • Les JSP sont stockées dans le jsp dossier.

  • Les fichiers JAR tiers sont stockés dans le lib dossier.

  • Les fichiers de classe Java sont stockés dans le WEB-INF\classes dossier.

Ce projet constitue le Hello World Application de télécopie pour le reste de ce didacticiel.

C:\work\FaxWebApplication>tree
Folder PATH listing
Volume serial number is 00740061 EC1C:ADB1
C:.
+---db
+---src
.  +---faxapp
.  +---dao
.  +---entity
.  +---util
.  +---web
+---war
   +---images
   +---js
   +---META-INF
   +---styles
   +---WEB-INF
      +---classes
      +---jsp
      +---lib

Voici le build.xml requis pour ce projet. Considérons-le morceau par morceau.

<?xml version = "1.0"?>
<project name = "fax" basedir = "." default = "build">
   <property name = "src.dir" value = "src"/>
   <property name = "web.dir" value = "war"/>
   <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 = "build" description = "Compile source tree java files">
      <mkdir dir = "${build.dir}"/>
      
      <javac destdir = "${build.dir}" source = "1.5" target = "1.5">
         <src path = "${src.dir}"/>
         <classpath refid = "master-classpath"/>
      </javac>
   </target>
 
   <target name = "clean" description = "Clean output directories">
      <delete>
         <fileset dir = "${build.dir}">
            <include name = "**/*.class"/>
         </fileset>
      </delete>
   </target>
</project>

Tout d'abord, déclarons quelques propriétés pour les dossiers source, web et build.

<property name = "src.dir" value = "src"/>
<property name = "web.dir" value = "war"/>
<property name = "build.dir" value = "${web.dir}/WEB-INF/classes"/>

Dans cet exemple -

  • src.dir fait référence au dossier source du projet dans lequel se trouvent les fichiers source java.

  • web.dir fait référence au dossier source Web du projet, où vous pouvez trouver les fichiers JSP, web.xml, css, javascript et autres fichiers Web liés

  • build.dir fait référence au dossier de sortie de la compilation du projet.

Les propriétés peuvent faire référence à d'autres propriétés. Comme le montre l'exemple ci-dessus, lebuild.dir propriété fait référence à la web.dir propriété.

Dans cet exemple, le src.dir fait référence au dossier source du projet.

La cible par défaut de notre projet est la compilecible. Mais regardons d'abord leclean cible.

La cible propre, comme son nom l'indique, supprime les fichiers du dossier de construction.

<target name = "clean" description = "Clean output directories">
   <delete>
      <fileset dir = "${build.dir}">
         <include name = "**/*.class"/>
      </fileset>
   </delete>
</target>

Le master-classpath contient les informations de classpath. Dans ce cas, il inclut les classes dans le dossier build et les fichiers jar dans le dossier lib.

<path id = "master-classpath">
   <fileset dir = "${web.dir}/WEB-INF/lib">
      <include name = "*.jar"/>
   </fileset>
   
   <pathelement path = "${build.dir}"/>
</path>

Enfin, la cible de construction pour construire les fichiers. Tout d'abord, nous créons le répertoire de construction, s'il n'existe pas. Ensuite, nous exécutons la commande javac (en spécifiant jdk1.5 comme compilation cible). Nous fournissons le dossier source et le chemin de classe à la tâche javac et lui demandons de déposer les fichiers de classe dans le dossier de construction.

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

L'exécution de Ant sur ce fichier compile les fichiers source java et place les classes dans le dossier de construction.

Le résultat suivant est le résultat de l'exécution du fichier Ant -

C:\>ant
Buildfile: C:\build.xml

BUILD SUCCESSFUL
Total time: 6.3 seconds

Les fichiers sont compilés et placés dans le build.dir dossier.