Ant - Création de fichiers WAR

La création de fichiers WAR avec Ant est extrêmement simple et très similaire à la tâche de création de fichiers JAR. Après tout, le fichier WAR, comme le fichier JAR, n'est qu'un autre fichier ZIP.

La tâche WAR est une extension de la tâche JAR, mais elle a quelques ajouts intéressants pour manipuler ce qui se trouve dans le dossier WEB-INF / classes et générer le fichier web.xml. La tâche WAR est utile pour spécifier une disposition particulière du fichier WAR.

La tâche WAR étant une extension de la tâche JAR, tous les attributs de la tâche JAR s'appliquent à la tâche WAR.

N ° Sr. Attributs et description
1

webxml

Chemin du fichier web.xml

2

lib

Un groupement pour spécifier ce qui va dans le dossier WEB-INF \ lib.

3

classes

Un groupement pour spécifier ce qui va dans le dossier WEB-INF \ classes.

4

metainf

Spécifie les instructions de génération du fichier MANIFEST.MF.

Poursuivant notre Hello WorldProjet d'application de télécopie, ajoutons une nouvelle cible pour produire les fichiers jar. Mais avant cela, considérons la tâche de guerre. Prenons l'exemple suivant -

<war destfile = "fax.war" webxml = "${web.dir}/web.xml">
   <fileset dir = "${web.dir}/WebContent">
      <include name = "**/*.*"/>
   </fileset>
   
   <lib dir = "thirdpartyjars">
      <exclude name = "portlet.jar"/>
   </lib>
   
   <classes dir = "${build.dir}/web"/>
</war>

Comme dans les exemples précédents, le web.dir variable fait référence au dossier Web source, c'est-à-dire au dossier qui contient les fichiers JSP, css, javascript, etc.

le build.dirvariable fait référence au dossier de sortie - C'est là que se trouvent les classes du package WAR. En règle générale, les classes seront regroupées dans le dossier WEB-INF / classes du fichier WAR.

Dans cet exemple, nous créons un fichier war appelé fax.war. Le fichier WEB.XML est obtenu à partir du dossier source Web. Tous les fichiers du dossier «WebContent» sous Web sont copiés dans le fichier WAR.

Le dossier WEB-INF / lib contient les fichiers jar du dossier thirdpartyjars. Cependant, nous excluons le portlet.jar car il est déjà présent dans le dossier lib du serveur d'applications. Enfin, nous copions toutes les classes du dossier Web du répertoire de construction et les plaçons dans le dossier WEB-INF / classes.

Enveloppez la tâche de guerre dans une cible Ant (généralement un package) et exécutez-la. Cela créera le fichier WAR à l'emplacement spécifié.

Il est tout à fait possible d'imbriquer les directeurs de classes, lib, metainf et webinf pour qu'ils vivent dans des dossiers dispersés n'importe où dans la structure du projet. Mais les meilleures pratiques suggèrent que votre projet Web doit avoir la structure de contenu Web qui est similaire à la structure du fichier WAR. Le projet d'application de télécopie a sa structure décrite en utilisant ce principe de base.

Pour exécuter la tâche war, enveloppez-la dans une cible, le plus souvent, la cible de construction ou de package, et exécutez-les.

<target name = "build-war">
   <war destfile = "fax.war" webxml = "${web.dir}/web.xml">
      <fileset dir = "${web.dir}/WebContent">
         <include name = "**/*.*"/>
      </fileset>
      
      <lib dir = "thirdpartyjars">
         <exclude name = "portlet.jar"/>
      </lib>
      
      <classes dir = "${build.dir}/web"/>
   </war>
</target>

Exécuter Ant sur ce fichier créera le fax.war fichier pour nous.

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

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

BUILD SUCCESSFUL
Total time: 12.3 seconds

Le fichier fax.war est maintenant placé dans le dossier de sortie. Le contenu du fichier war sera -

fax.war:
   +---jsp             This folder contains the jsp files
   +---css             This folder contains the stylesheet files
   +---js              This folder contains the javascript files
   +---images          This folder contains the image files
   +---META-INF        This folder contains the Manifest.Mf
   +---WEB-INF
      +---classes   This folder contains the compiled classes
      +---lib       Third party libraries and the utility jar files
      WEB.xml       Configuration file that defines the WAR package