Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide
Consultez :
  • Les documents de reference sur le projet original
  • Les sources de la traduction fr sur GitHub
  • maven


    1.4. Réutilisation universelle grâce aux plugins Maven

    Le cœur de Maven est assez stupide, il ne sait pas faire grand-chose à part parser quelques documents XML et garder les traces d'un cycle de vie et de l'exécution de quelques plugins. Maven a été conçu pour déléguer la responsabilité du build à un ensemble de plugins Maven qui vont affecter le cycle de vie de Maven et fournir différentes actions : les goals. Avec Maven, tout se passe dans les goals des plugins, c'est là que le code source est compilé, que le bytecode est packagé, que les sites sont publiés et que toute autre tâche nécessaire à votre build se produit. Le Maven que vous téléchargez chez Apache n'y connaît rien en packaging de fichier WAR ou en exécution de tests JUnit ; la plus grande partie de l'intelligence de Maven se trouve dans les plugins, plugins qui sont récupérés du dépôt Maven. En effet, la première fois que vous exécutez une commande comme mvn install avec une installation de Maven vierge, elle télécharge les plugins Maven de base du dépôt Maven Central. C'est plus qu'une astuce pour réduire la taille de la distribution Maven à télécharger, c'est par ce moyen que vous pouvez mettre à jour un plugin pour apporter de nouvelles possibilités au build de votre projet. C'est parce que Maven récupère les dépendances et les plugins depuis des dépôts distants que vous pouvez réutiliser une logique de build universelle.

    Le plugin Maven Surefire est le plugin qui a en charge l'exécution des tests unitaires. À un moment donné, entre la version 1.0 et la version utilisée actuellement quelqu'un a décidé d'apporter le support du framework de tests unitaires TestNG en plus de celui de JUnit. Cette mise à jour s'est faite sans casser la compatibilité ascendante. Si vous utilisez le plugin Surefire pour compiler et exécuter vos tests unitaires JUnit 3, et que vous le mettez à jour, vos tests continueront de s'exécuter sans erreur. Mais vous avez obtenu une nouvelle fonctionnalité, vous pouvez exécuter des tests avec TestNG. Et en plus, vous pouvez exécuter des tests unitaires JUnit 4 annotés. Tout cela sans avoir à mettre à jour votre installation de Maven ou à installer quoi que ce soit. Et plus important encore, vous n'avez rien changé à votre projet si ce n'est le numéro de version d'un plugin dans un unique fichier de configuration de Maven, le Project Object Model (POM).

    C'est ce même mécanisme que l'on retrouve dans tout Maven. Maven dispose de plugins pour tout faire, de la compilation du code Java à la génération de rapports et au déploiement sur un serveur d'applications. Maven a extrait les tâches de la construction d'un projet dans des plugins qui sont centralisés pour leur maintenance et partagés universellement. Si l'état de l'art change pour une étape quelconque du build, si un nouveau framework de tests unitaires sort, si de nouveaux outils deviennent disponibles, vous n'avez plus à ajouter une nouvelle verrue à votre système personnalisé de build pour en profiter. Vous allez bénéficier du fait que les plugins sont téléchargés depuis un dépôt distant et maintenus centralement. C'est tout cela qu'implique la notion de réutilisation universelle par les plugins Maven.