Le cycle de vie est une séquence d'activités nommées phases .
Les phases s'exécutent de manière séquentielle. L'exécution d'une phase entraîne l'exécution de toutes les phases précédentes.
Le plugin est une collection de objectifs également appelé MOJO ( M aven O ld J ava O bjet).
Analogie : Plugin est une classe et les objectifs sont des méthodes au sein de la classe.
Maven s'articule autour du concept central d'une Cycles de vie des bâtiments . A l'intérieur de chaque Cycles de vie des bâtiments il y a Phases de construction et à l'intérieur de chaque Phases de construction il y a Objectifs de construction .
Nous pouvons exécuter soit une phase de construction, soit un objectif de construction. Lorsque nous exécutons une phase de construction, nous exécutons tous les objectifs de construction de cette phase. Les objectifs de construction sont affectés à une ou plusieurs phases de construction. Nous pouvons également exécuter un objectif de construction directement.
Il y a trois principaux éléments intégrés Cycles de vie des bâtiments :
- par défaut
- nettoyer
- site
Chaque cycle de vie de la construction est constitué de phases
Par exemple, le default
Le cycle de vie comprend les éléments suivants Phases de construction :
validate - validate the project is correct and all necessary information is available
compile - compile the source code of the project
test - test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed
package - take the compiled code and package it in its distributable format, such as a JAR.
integration-test - process and deploy the package if necessary into an environment where integration tests can be run
verify - run any checks to verify the package is valid and meets quality criteria
install - install the package into the local repository, for use as a dependency in other projects locally
deploy - done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.
Ainsi, pour passer par les phases ci-dessus, il suffit d'appeler une commande :
mvn <phase> { Ex: mvn install }
Pour la commande ci-dessus, en commençant par la première phase, toutes les phases sont exécutées séquentiellement jusqu'à la phase "installer". mvn
peut soit exécuter un objectif ou une phase (ou même plusieurs objectifs ou plusieurs phases) comme suit :
mvn clean install plugin:goal
Cependant, si vous souhaitez personnaliser le préfixe utilisé pour référencer votre plugin, vous pouvez spécifier le préfixe directement par le biais d'un paramètre de configuration sur la page d'accueil de l'interface utilisateur. maven-plugin-plugin
dans votre La plugin est POM.
Une phase de construction se compose de Plugin Objectifs
La plupart des fonctionnalités de Maven se trouvent dans les plugins. Un plugin fournit un ensemble de objectifs qui peut être exécuté en utilisant la syntaxe suivante :
mvn [plugin-name]:[goal-name]
Par exemple, un projet Java peut être compilé avec l'objectif de compilation du plugin de compilation en exécutant les commandes suivantes mvn compiler:compile
.
Le cycle de vie de la construction est une liste de phases nommées qui peuvent être utilisées pour donner un ordre à l'exécution des objectifs.
Les objectifs fournis par les plugins peuvent être associés à différentes phases du cycle de vie. Par exemple, par défaut, le objectif compiler:compile
est associé à la compile
phase tandis que le objectif surefire:test
est associé à la test
phase . Considérez la commande suivante :
mvn test
Lorsque la commande précédente est exécutée, Maven exécute tous les objectifs associés à chacune des phases jusqu'à et y compris le test
phase. Dans un tel cas, Maven exécute le resources:resources
objectif associé à la process-resources
phase, puis compiler:compile
et ainsi de suite jusqu'à ce qu'il exécute finalement le surefire:test
objectif.
Cependant, même si une phase de construction est responsable d'une étape spécifique du cycle de vie de la construction, la manière dont elle s'acquitte de ces responsabilités peut varier. Et ceci est fait en déclarant les objectifs du plugin liés à ces phases de construction.
Un objectif de plugin représente une tâche spécifique (plus fine qu'une phase de construction) qui contribue à la construction et à la gestion d'un projet. Il peut être lié à zéro ou plusieurs phases de construction. Un objectif non lié à une phase de construction peut être exécuté en dehors du cycle de construction par invocation directe. L'ordre d'exécution dépend de l'ordre dans lequel le ou les objectifs et la ou les phases de construction sont invoqués. Par exemple, considérez la commande ci-dessous. Le site clean
et package
sont des phases de construction, tandis que les arguments dependency:copy-dependencies
est un objectif (d'un plugin).
mvn clean dependency:copy-dependencies package
Si cela devait être exécuté, le clean
sera exécutée en premier (c'est-à-dire qu'elle exécutera toutes les phases précédentes du cycle de vie du nettoyage, plus la phase clean
elle-même), et ensuite la dependency:copy-dependencies
avant d'exécuter finalement l'objectif package
(et toutes ses phases de construction précédentes du cycle de vie par défaut).
De plus, si un objectif est lié à une ou plusieurs phases de construction, cet objectif sera appelé dans toutes ces phases.
En outre, une phase de construction peut également avoir zéro ou plusieurs objectifs liés à elle. Si une phase de construction n'a pas d'objectifs liés à elle, elle ne s'exécutera pas. Mais si un ou plusieurs objectifs lui sont liés, elle exécutera tous ces objectifs.
Liaisons intégrées du cycle de vie
Certaines phases ont des objectifs qui leur sont liés par défaut. Et pour le cycle de vie par défaut, ces liaisons dépendent de la valeur du packaging.
Architecture Maven :
Référence 1
Référence 2
Exemple d'Eclipse pour Maven Lifecycle Mapping
3 votes
Questions et réponses répondu à sur Maven : Cycle de vie vs. phase vs. plugin vs. objectif (une fois de plus).
1 votes
Duplicata possible de Maven : Cycle de vie vs. phase vs. plugin vs. objectif