Objectifs et phases de Maven

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 Maven Build

La version Maven suit un cycle de vie spécifique pour déployer et distribuer le projet cible.

Il existe trois cycles de vie intégrés:

  • par défaut: le cycle de vie principal car il est responsable du déploiement du projet
  • clean: pour nettoyer le projet et supprimer tous les fichiers générés par la construction précédente
  • site: pour créer la documentation du site du projet

Chaque cycle de vie se compose d'une séquence de phases. Le cycle de vie de build par défaut se compose de 23 phases car il s'agit du cycle de vie de build principal.

D'autre part, le cycle de vie propre se compose de 3 phases, tandis que le cycle de vie du site est composé de 4 phases.

3. Phase Maven

Une phase Maven représente une étape du cycle de vie de construction Maven . Chaque phase est responsable d'une tâche spécifique.

Voici quelques-unes des phases les plus importantes du cycle de vie de build par défaut :

  • valider: vérifier si toutes les informations nécessaires à la construction sont disponibles
  • compile: compile le code source
  • test-compile: compile le code source du test
  • test: exécuter des tests unitaires
  • package: package du code source compilé au format distribuable (jar, war,…)
  • intégration-test: traiter et déployer le package si nécessaire pour exécuter des tests d'intégration
  • install: installe le package dans un référentiel local
  • deploy: copiez le package dans le référentiel distant

Pour obtenir la liste complète des phases de chaque cycle de vie, consultez la référence Maven.

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 

Cela 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 de déploiement - qui est la dernière phase du cycle de vie de construction par défaut - qui exécutera également toutes les phases avant la phase de déploiement , qui correspond au cycle de vie par défaut complet :

mvn deploy

4. Objectif Maven

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 quelques-unes des phases et des objectifs par défaut qui leur sont liés:

  • compilateur: Compile - l' compilation but du compilateur plug - in est lié à la compilation de phase
  • compilateur: testCompile est lié à la phase de test-compilation
  • infaillible: le test est lié à la phase de test
  • installer: l'installation est liée à la phase d' installation
  • jar: jar et war: la guerre est liée à la phase de package

Nous pouvons lister tous les objectifs liés à une phase spécifique et leurs plugins à l'aide de la commande:

mvn help:describe -Dcmd=PHASENAME

Par exemple, pour lister tous les objectifs liés à la phase de compilation , 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

Ce qui, comme mentionné ci - dessus, signifie la compilation objectif du compilateur plug - in est lié à la compilation phase.

5. Plug-in Maven

Un plugin Maven est un groupe d'objectifs. Cependant, ces objectifs ne sont pas nécessairement tous liés à la même phase.

Par exemple, voici une configuration simple du plugin Maven Failsafe qui est responsable de l'exécution des tests d'intégration:

   maven-failsafe-plugin ${maven.failsafe.version}    integration-test verify      

Comme nous pouvons le voir, le plugin Failsafe a deux objectifs principaux configurés ici:

  • test d'intégration : exécuter des tests d'intégration
  • vérifier : 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 :help

Par exemple, pour lister tous les objectifs dans le plugin 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= 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 :

Par exemple, pour exécuter l' objectif de test d'intégration à partir du plugin 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

Cela exécutera tout le cycle de vie par défaut . Alternativement, nous pouvons nous arrêter à la phase d' installation :

mvn install

Mais généralement, nous utiliserons la commande:

mvn clean install

Pour nettoyer le projet en premier - en exécutant le cycle de vie propre - avant la nouvelle version.

Nous pouvons également exécuter uniquement un objectif spécifique du plugin:

mvn compiler:compile

Notez que si nous essayons de construire un projet Maven sans spécifier de phase ou 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 discuté des cycles de vie de construction Maven ainsi que de la relation entre les phases et les objectifs de Maven.