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. Avantages
10.1.1. Inconvénients
10.2. Dans target/<final-name> : war:exploded
10. Integration avec Tomcat
Par défaut Maven gère les fichiers sources dans le répertoire src et les fichiers
compilé dans le répertoire target. Et ce, même si la compilation ne fournis 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 compilatation 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é aux developpeurs. Malheureusement certaines limitations la
rende innutilisable dans certains cas.
10.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
intantanément.
10.1.1. Inconvénients
-
En ne passant plus par Maven pour la compilation, on perd beaucoup des
fonctionnalitées de Maven. Par exemple, il n'est pas possible d'utiliser
le filtrage de resource. 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 certain projet, il y a un mécanisme de dépendance entre application
Web. Cela permet de récupperer 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 commit des sources du
projet, il faut faire particulièrement attention à ne pas commité les
fichier hérité dans le projet au risque desurcharger les fichiers et ne
perdre la dépendance.
-
Si le projet et modulaire (voir plus bas) aucun répertoire ne pourra
servir de base à Tomcat, le fonctionnement est donc impossible.
10.2. Dans target/<final-name> : 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. L'avantage est que l'on reste entièrement dans le
cadre de Maven, pas d'entorses au concept : src 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...
L'inconvénient est qu'il faut passer par Maven pour toutes modification des
fichiers. 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.