Utiliser Maven 2
Date de publication : 04/08/2008 , Date de mise à jour : 04/08/2008
10. Integration avec Tomcat
10.1. Dans src/main/webapp : war:inplace
10.1.1. Avantages
10.1.2. Inconvénients
10.2. Dans target/<finalName> : war:exploded
10.2.1.
10.2.2.
10. Integration avec Tomcat
Par défaut Maven gère les fichiers sources dans le répertoire src et les fichiers
compilés dans le répertoire target. Et ce, même si la compilation ne fournit pas
d'autre valeur ajoutée que la recopie du fichier.
La question du fonctionnement avec le développement sous Tomcat se pose alors. On a
l'habitude de pouvoir modifier directement les fichiers utilisés par Tomcat ce qui
permet de ne pas le redémarrer pour tester les modifications (du moins pour les
fichiers statiques).
On démarre toujours Tomcat dans un répertoire webapp racine. La question est alors
de savoir si on démarre tomcat dans le répertoire src/main/webapp ou
target/<final-name>.
10.1. Dans src/main/webapp : war:inplace
Cela va un peu à l'encontre des grands principes de Maven. Si on démarre Tomcat
dans le répertoire src, cela veut dire qu'il faudra ajouter dans
src/main/webapp/WEB-INF/classes les fichiers compilés et dans
src/main/webapp/WEB-INF/lib les dépendances.
La commande war:inplace réalisera cette opération automatiquement. En
configurant Eclipse pour positionner sa sortie de compilation dans le répertoire
src/main/webapp/WEB-INF/classes, tout fonctionnera correctement.
Cette solution est à privilégier dès qu'elle est possible car elle apporte les
meilleurs possibilités aux développeurs. Malheureusement certaines limitations
la rende innutilisable dans certains cas.
10.1.1. Avantages
C'est une solution très pratique car après une initialisation par la
commande war:inplace, il est possible de développer avec Tomcat sans
utiliser Maven et en profitant de toutes les modifications dans Tomcat
instantanément.
10.1.2. Inconvénients
-
En ne passant plus par Maven pour la compilation, on perd beaucoup des
fonctionnalités de Maven. Par exemple, il n'est pas possible d'utiliser
le filtrage de ressources. Comme Eclipse ne le gère pas, les fichiers
qui seront copiés dans src/main/webapp/WEB-INF/classes ne seront pas
filtrés.
-
Dans certains projets, il y a un mécanisme de dépendance entre
applications Web. Cela permet de récuperer dans la webapp des fichiers
d'une dépendance. Dans ce cas, le goal war:inplace va recopier les
dépendances dans le répertoire src/main/webapp. Pour gérer les commits
des sources du projet, il faut faire particulièrement attention à ne pas
commiter les fichiers hérités dans le projet au risque de surcharger les
fichiers et de perdre la dépendance.
-
Si le projet est modulaire (voir plus bas) aucun répertoire ne pourra
servir de base à Tomcat, le fonctionnement est donc impossible.
10.2. Dans target/<finalName> : war:exploded
La propriété final name dans maven correspond au nom du package à utiliser. Il
se configure comme ceci :
Configuration du nom de packet |
< build >
< final-name > package-name< / final-name >
...
< / build >
|
La commande war:exploded va créer un répertoire target/<final-name> qui
contiendra le war de l'application sans réaliser l'archive.
En configurant Tomcat pour démarrer dans ce répertoire, il utilisera les
fichiers compilés par Maven.
10.2.1.
On reste entièrement dans le cadre de Maven, pas d'entorse au concept :
sources d'un côté, fichiers compilés de l'autre. On profite de tous les
mécanismes de Maven : filtrage, projets modulaire, dépendances des fichiers
de la webapp...
10.2.2.
Il faut passer par Maven pour toutes modifications de fichier. Cette
opération peut être fastidieuse.
Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à
votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre
intellectuelle protégée par les droits d'auteurs. Copyright Matthieu Lux . Aucune
reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu
: textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous
encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets.