Utiliser Maven 2
Date de publication : 04/08/2008 , Date de mise à jour : 04/08/2008
3. Cycle de vie et goal Maven
3.1. Goals Maven
3.1.1. Définition
3.1.2. Localisation des goals
3.2. Cycle de vie et goals
3. Cycle de vie et goal Maven
Maven a pour objectif de gérer tout le cycle de vie de l'application. Il définit
pour cela une liste d'étapes ordonnées qui sont pour lui le cycle de vie par défaut
d'un projet. Chaque type de projets (jar, war...) pourra associer des actions
différentes pour chaque étapes.
Le cycle de vie par défaut définit les étapes suivantes :
-
validate
Valide que le projet est correctement défini
-
compile
Compile les sources
-
test
Lance les tests unitaires
-
package
Prépare la distribution du projet. (archives Jar, War, Ear...)
-
integration-test
Lance les tests d'intégration
-
verify
Lance des tests de validation du package créé.
-
install
Installe le package en local sur la machine pour pouvoir être réutilisé comme
dépendance.
-
deploy
Déploie le package sur un serveur pour qu'il puisse être réutilisé par tout le
monde.
Maven gère des concepts qui ne le limite pas à la manipulations de projets Java. Il
existe des plugins Maven dédié au support d'autres technologies que le Java. C'est
le cas notament de
PHP
,
.net
,
Ruby
,
Flex
3.1. Goals Maven
3.1.1. Définition
On fournit à Maven 2 une liste de goals à exécuter. Un goal est une tâche
précise que Maven est en mesure de réaliser à partir des informations qu'il
pourra trouver dans le fichier pom.xml.
A partir de la compréhension qu'il a du projet, il est capable d'exécuter
énormément d'opérations dessus, chaque opération correspondant à un goal.
Pour lancer un goal Maven sur un projet, il faut se placer à la racine du
projet et exécuter la commande :
Il est possible d'enchaîner deux ou plusieurs goals avec la commande :
mvn <nom du goal 1> <nom du goal 2> <nom du goal 3>
|
3.1.2. Localisation des goals
Tous les goals se trouvent dans des plugins Maven. Pour exécuter un goal,
Maven va donc commencer par résoudre le nom du goal pour en déduire le
plugin dans lequel il se trouve et le télécharger.
Tous les goals maven s'écrivent de la façon suivante :
<nom du plugin>:<nom du goal>
|
|
Dans notre projet précédemment créé, on peut lancer le goals
compile
du plugin
compiler
:
|
Exécution explicit du goal compiler:compile |
~/cours-maven-example$ mvn compiler:compile
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'compiler'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Projet d'exemple pour le cours Maven
[INFO] task-segment: [compiler:compile]
[INFO] ------------------------------------------------------------------------
[INFO] [compiler:compile]
[INFO] Compiling 1 source file to ~\cours-maven-example\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Tue Aug 12 14:33:40 CEST 2008
[INFO] Final Memory: 2M/5M
[INFO] ------------------------------------------------------------------------
|
3.2. Cycle de vie et goals
Chaque type de projet définit un ou plusieurs goals par défaut associés aux
étapes du cycle de vie. Maven gère alors la progression dans le cycle de vie.
Lors du traitement d'un goal associé à une étape du cycle de vie, Maven lancera
tous les goals associés aux étapes précédentes.
Il est possible de lancer la commande
mvn
avec comme paramètre une étape du cycle de vie.
mvn <étape du cycle de vie>
|
Maven exécute alors dans l'ordre tous les goals correspondants à chaque étape du
cycle précédent celle qui a été demandée.
C'est ce mécanisme qui permet d'utiliser des commandes tu type :
ou
Ce ne sont pas des noms de goal mais des nom d'étapes du cycle de vie. Des goals
Maven y sont associés : compiler:compile pour le cycle compile, et war:war qui
est exécuté pour un install dans un projet de type war (après avoir parcouru les
étapes précédente dans le cycle de vie).
|
Si on utilise une partie importante du cycle de vie par défaut d'un projet Jar,
on peut identifier la liste des goals que Maven utilise : [resources:resources],
[compiler:compile], [compiler:testCompile], [surefire:test], [jar:jar],
[install:install]
|
Exécution avec un étape avancée du cycle de vie |
~/cours-maven-example$ mvn install
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Projet d'exemple pour le cours Maven
[INFO] task-segment: [install]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Compiling 1 source file to ~\cours-maven-example\target\classes
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] No sources to compile
[INFO] [surefire:test]
[INFO] No tests to run.
[INFO] [jar:jar]
[INFO] Building jar: ~\cours-maven-example\target\cours-maven-example-1.0.jar
[INFO] [install:install]
[INFO] Installing ~\cours-maven-example\target\cours-maven-example-1.0.jar to
~\.m2\repository\com\developpez\cours-maven-example\1.0\cours-maven-example-1.0.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9 seconds
[INFO] Finished at: Tue Aug 12 14:36:05 CEST 2008
[INFO] Final Memory: 8M/14M
[INFO] ------------------------------------------------------------------------
|
Le cycle
clean
est une exception. Il ne fait pas partie directement du cycle de vie mais peut
toujours être utilisé. Il permet de nettoyer (supprimer) le repertoire de
travail de Maven. Il fait référence au goal clean du plugin clean.
| Sur notre projet : |
Exécution du clean |
~/cours-maven-example$ mvn clean
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Projet d'exemple pour le cours Maven
[INFO] task-segment: [clean]
[INFO] ------------------------------------------------------------------------
[INFO] [clean:clean]
[INFO] Deleting directory ~\cours-maven-example\target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Tue Aug 12 14:51:24 CEST 2008
[INFO] Final Memory: 3M/5M
[INFO] ------------------------------------------------------------------------
|
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.