05/01/2009

Créer un 'war' avec Eclipse et Ant

Dans la note précédente, il a été vu que l'on peut créer une archive 'jar' à partir d'un fichier de description 'jardesc' avec Eclipse. L'archive 'jar est utilisée pour exécuter une application JAVA sur une machine virtuelle JAVA (commande java sous DOS).

Dans le cas du déploiement d'une application 'web' JAVA, il convient d'exporter le projet Eclipse sous forme de WAR ( Web ARchive). L'archive peut ensuite être copiée dans le répertoire de déploiement d'un serveur Java. Dans le cas présent, la finalité sera de copier l'archive WAR dans le répertoire 'webapps' d'un serveur Tomcat.

Le format 'war' est en fait un 'jar' qui doit contenir un répertoire "WEB-INF" qui lui-même contient:

  • un descripteur de déploiement 'web.xml'
  • un répertoire 'classes' où sont placés les '.class' du code compilé
  • un répertoire 'lib' où se trouvent les librairies externes 'jar'

L'archive 'WAR' peut être générée à l'aide d'ANT. Il existe en effet une tâche ANT dédiée à cette opération. Le nom de cette tâche est 'war'. L'attribut 'destfile' permet de préciser le nom de l'archive war à créer. Et l'attribut 'webxml' permet de spécifier le nom du fichier web.xml à utiliser pour déployer l'application web.

Pour constituer le contenu de l'archive on utilise divers tags:

  • <classes> pour préciser où se trouvent le code compilé '.class'
  • <lib> pour les libraires '.jar' externes
  • <zipfileset> pour grouper des fichiers et des répertoires (dont on peut exclure des éléments)

Exemple de cible ANT pour la génération d'un WAR:

<property name="jsp.dir" value="WEB-INF/jsp" />   
<property name="css.dir" value="stylesheet" />   
<property name="xsl.dir" value="WEB-INF/stylesheet" />       
<property name="xml.dir" value="WEB-INF/xml" />   
<property name="tld.dir" value="WEB-INF/tld" />   
<property name="scripts.dir" value="scripts" />
<property name="onlineHelp.dir" value="help" />       
<property name="images.dir" value="images" />   

<target name="War">
<description>
Creates a War file to deploy on Tomcat 
</description>
<echo message="Creation du War" />

<war destfile="rep_destination/mon_appli.war" webxml="WEB-INF/web.xml">    
<classes dir="WEB-INF/classes"/>       
<lib dir="WEB-INF/lib" />
<fileset dir=".">
<include name="*.jsp" />
<include name="*.html" />
<include name="*.htm" />
</fileset>
<zipfileset dir="${jsp.dir}" prefix="WEB-INF/jsp" />                   
<zipfileset dir="${scripts.dir}" prefix="scripts" />
<zipfileset dir="${onlineHelp.dir}" prefix="help" />
<zipfileset dir="${images.dir}" prefix="images" />         
<zipfileset dir="${css.dir}" prefix="stylesheet" />   
<zipfileset dir="${tld.dir}" prefix="WEB-INF/tld" >
<exclude name="CVS" />             
</zipfileset>         
<zipfileset dir="${xsl.dir}" prefix="WEB-INF/stylesheet" />
<zipfileset dir="${xml.dir}" prefix="WEB-INF/xml" />         
</war>
</target>

 

Ressources:

Auteur: Euan MATEO