IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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 :

	mvn <nom du goal>
					
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>
					
idea 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 :

	mvn compile
				
ou

	mvn install
				
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).

idea 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.

ideaSur 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] ------------------------------------------------------------------------
				
 

Valid XHTML 1.1!Valid CSS!

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.