3.23 Règles-Maven
L’ensemble des projets BACK, FRONT sont construits avec Maven. Maven apporte deux grands services :
- la gestion des dépendances
- se base sur l’identification unique de chaque artefact (alias livrable applicatif ) quelque soit son type (JAR, WAR ou EAR. Cette clef unique se compose du groupid, de l’artefactid et de la version. Par convention, le groupid est le package de base de la solution (donc aussi un nom DNS déclarant le propriétaire). L’artefactid peut être n’importe quoi. Et la version est une chaîne de caractères sur le modèle
[0-9]+\.[0-9]+\.[0-9]+(-(RELEASE|SNAPSHOT))? (explication release/snapshot).
- permet à un artefact de déclarer qu’il dépend d’un ou plusieurs autres artefacts qui eux-mêmes peuvent dépendre d’autres artefacts (dépendance transitive), …
- la notion de build
- fournit un squelette par défaut d’exécutions de plugins réalisant des tâches basiques et communes à tout projet Java comme détruire le répertoire target (qui contient le résultat de la compilation et des tests) puis compile les sources puis compile les tests puis exécute les tests puis crée l’artefact et le copie dans le repository local.
- est totalement configurable en ajoutant des plugins leur demandant d’exécuter une tâche précise (nommée goal) à un moment précis du cycle de vie du build (à un stage).
3.23.1 - Règles de développement liées à Maven
Les modification de la configuration Maven ainsi que la création de nouveaux projets/artefact n’est pas dans les prérogatives d’un développeur.
Les règles associées à Maven sont
- Toutes les versions des dépendances sont définies dans la balise dependencyManagement du pom.xml racine du socle.
- Ces versions sont dans une propriété préfixée par version..
- Aucune surcharge de version ou exclusion de dépendance transitive ne doit être mise en place sans un gros commentaire explicite.
- Le build du profile par défaut doit s’exécuter le plus rapidement possible mais doit quand même aboutir à la création d’un livrable complet et fiable. Cela signifie
- que les tests automatisés font partie du build ;
- que la génération de documentation ne fait pas partie du build ;
- que la qualimétrie ne fait pas partie du build.
- L’exécution du build ne doit pas nécessiter/dépendre d’outils autre qu’un JDK et de Maven.