Objectifs et phases 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 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.