1. Vue d’ensemble
Dans ce didacticiel, nous explorerons différents cycles de vie de construction Maven et leurs phases.
Nous discuterons également de la relation fondamentale entre les objectifs et les phases.
2. Cycle de vie de construction Maven
La construction Maven suit un cycle de vie spécifique pour déployer et distribuer le projet cible.
Il y a trois cycles de vie intégrés:
-
default: le cycle de vie principal en tant que responsable du projet
déploiement ** clean: pour nettoyer le projet et supprimer tous les fichiers générés par le
construction précédente ** site: pour créer la documentation du site du projet
-
Chaque cycle de vie consiste en une séquence de phases. ** Le cycle de vie de la construction default se compose de 23 phases car il s’agit du cycle de vie de la construction principale.
D’autre part, le cycle de vie de clean comprend 3 phases, tandis que le cycle de vie de site se compose de 4 phases.
3. Phase Maven
-
Une phase Maven représente une étape du cycle de vie de la construction Maven ** . Chaque phase est responsable d’une tâche spécifique.
Voici certaines des phases les plus importantes du cycle de vie du build default :
-
validate: vérifie si toutes les informations nécessaires à la construction sont
disponible ** compile: compiler le code source
-
test-compile: compile le code source du test
-
test: exécuter des tests unitaires
-
package: package le code source compilé dans le format distribuable
(pot, guerre, …) ** integration-test: traite et déploie le paquet si nécessaire pour l’exécuter
tests d’intégration ** install: installe le paquet dans un référentiel local
-
deploy: copier le package dans le référentiel distant
Pour obtenir la liste complète des phases de chaque cycle de vie, consultez le Maven Reference .
Les phases sont exécutées dans un ordre spécifique. Cela signifie que si nous exécutons une phase spécifique à l’aide de la commande:
mvn <PHASE>
-
Ceci n’exécutera pas seulement la phase spécifiée, mais également toutes les phases précédentes. **
Par exemple, si nous exécutons la phase deploy - qui est la dernière phase du cycle de vie de la construction default -, toutes les phases précédant la phase deploy seront également exécutées, ce qui correspond à la totalité du cycle de vie default :
mvn deploy
4. Maven Goal
-
Chaque phase est une séquence d’objectifs et chaque objectif est responsable d’une tâche spécifique. **
Lorsque nous exécutons une phase, tous les objectifs liés à cette phase sont exécutés dans l’ordre.
Voici certaines des phases et des objectifs par défaut qui leur sont liés:
-
compiler: compile - l’objectif compile du plugin compiler est
lié à la phase compile ** compiler: testCompile est lié à la phase test-compile
-
surefire: test est lié à la phase de test
-
install: install est lié à install phase
-
jar: jar et war: war est lié à la phase package
Nous pouvons lister tous les objectifs liés à une phase spécifique et leurs plugins en utilisant la commande:
mvn help:describe -Dcmd=PHASENAME
Par exemple, pour répertorier tous les objectifs liés à la phase compile , nous pouvons exécuter:
mvn help:describe -Dcmd=compile
Et obtenez l’exemple de sortie:
compile' is a phase corresponding to this plugin:
org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
Comme indiqué ci-dessus, l’objectif compile du plugin compiler est lié à la phase compile
5. Plugin Maven
-
Un plugin Maven est un groupe d’objectifs. ** Cependant, ces objectifs ne sont pas nécessairement liés à la même phase.
Par exemple, voici une configuration simple du plug-in Maven Failsafe chargé d’exécuter les tests d’intégration:
<build>
<plugins>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${maven.failsafe.version}</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Comme on peut le constater, le plugin Failsafe a deux objectifs principaux configurés ici:
-
integration-test : lance les tests d’intégration
-
verify : vérifier tous les tests d’intégration réussis
Nous pouvons utiliser la commande suivante pour lister tous les objectifs dans un plugin spécifique :
mvn <PLUGIN>:help
Par exemple, pour répertorier tous les objectifs dans le plug-in Failsafe:
mvn failsafe:help
Et le résultat de ceci sera:
This plugin has 3 goals:
failsafe:help
Display help information on maven-failsafe-plugin.
Call mvn failsafe:help -Ddetail=true -Dgoal=<goal-name> to display parameter
details.
failsafe:integration-test
Run integration tests using Surefire.
failsafe:verify
Verify integration tests ran using Surefire.
-
Pour exécuter un objectif spécifique, sans exécuter toute sa phase (et les phases précédentes) ** , nous pouvons utiliser la commande:
mvn <PLUGIN>:<GOAL>
Par exemple, pour exécuter integration-test goal à partir du plug-in Failsafe, nous devons exécuter:
mvn failsafe:integration-test
6. Construire un projet Maven
Pour construire un projet Maven, nous devons exécuter l’un des cycles de vie en exécutant l’une de leurs phases:
mvn deploy
Ceci exécutera le cycle de vie complet de default . Alternativement, nous pouvons nous arrêter à la phase install :
mvn install
Mais habituellement, nous utiliserons la commande:
mvn clean install
Pour nettoyer le projet en premier, en exécutant le cycle de vie clean , avant la nouvelle génération.
Nous pouvons également ne lancer qu’un objectif spécifique du plugin:
mvn compiler:compile
Notez que si nous essayons de construire un projet Maven sans spécifier de phase ni d’objectif, cela provoquera l’erreur
----[ERROR]No goals have been specified for this build. You must specify a valid lifecycle phase or a goal
----
7. Conclusion
Dans cet article, nous avons abordé les cycles de vie de la construction Maven ainsi que la relation entre les phases et les objectifs Maven.