0.1.2-alpha.3
This commit is contained in:
84
docs/rules/521-MAVEN.md
Normal file
84
docs/rules/521-MAVEN.md
Normal file
@@ -0,0 +1,84 @@
|
||||
<!-- file: docs/rules/521-MAVEN.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Profil Maven
|
||||
|
||||
## Rôle
|
||||
|
||||
Ce document possède les règles réutilisables propres au build tool Maven.
|
||||
|
||||
Il complète [`500-LANGUAGES.md`](500-LANGUAGES.md) et, lorsqu'il construit du code Java, [`520-JAVA.md`](520-JAVA.md). Maven n'est pas une règle implicite de tous les projets Java : ce profil s'applique uniquement lorsqu'un projet utilise réellement Maven.
|
||||
|
||||
Les contraintes imposées par une plateforme ou un framework plus spécifique restent possédées par ce scope plus spécifique et MAY raffiner localement le présent profil.
|
||||
|
||||
## Ownership du build
|
||||
|
||||
Dans un projet Maven multi-module, le POM parent/root SHOULD centraliser ce qui est réellement commun :
|
||||
|
||||
- version du projet lorsqu'elle doit être reflétée par Maven ;
|
||||
- niveau de langage ou de bytecode lorsqu'il appartient au build concerné ;
|
||||
- `dependencyManagement` ;
|
||||
- `pluginManagement` ;
|
||||
- configuration commune de compilation et de tests.
|
||||
|
||||
Les modules SHOULD hériter de cette politique lorsque Maven le permet et ne pas recopier les mêmes versions/configurations sans nécessité.
|
||||
|
||||
Le fichier PGR `VERSION` reste la version canonique de l'unité de release. Le `pom.xml` racine porte un miroir technique lorsque Maven exige cette valeur. Les enfants SHOULD hériter de la version parent afin d'éviter les modifications mécaniques répétées de nombreux POM.
|
||||
|
||||
`dependencyManagement` centralise les contraintes de version communes ; il ne signifie pas qu'une dépendance doit être effectivement ajoutée à tous les modules. Chaque module déclare uniquement ce qu'il utilise.
|
||||
|
||||
## Maven Wrapper
|
||||
|
||||
Deux politiques sont légitimes :
|
||||
|
||||
```text
|
||||
Maven système
|
||||
→ environnement contrôlé
|
||||
→ contrainte de version documentée ou vérifiée selon les besoins du projet
|
||||
|
||||
Maven Wrapper
|
||||
→ distribution / CI / onboarding reproductible
|
||||
→ wrapper versionné
|
||||
```
|
||||
|
||||
PGR MUST NOT ajouter un Maven Wrapper uniquement par cérémonie.
|
||||
|
||||
Lorsqu'un wrapper est retenu, ses fichiers requis sont versionnés et constituent une exception explicite à la politique générale qui ignore les outputs générés.
|
||||
|
||||
## Validation Maven
|
||||
|
||||
Le développement SHOULD privilégier les gates ciblées avant le reactor complet.
|
||||
|
||||
Exemple avec wrapper :
|
||||
|
||||
```bash
|
||||
./mvnw -pl <module> -am test
|
||||
```
|
||||
|
||||
Exemple avec Maven système :
|
||||
|
||||
```bash
|
||||
mvn -pl <module> -am test
|
||||
```
|
||||
|
||||
Les gates globales telles que le reactor complet, `verify` ou le packaging de tous les modules SHOULD être réservées aux changements transverses et aux phases où elles fournissent une preuve supplémentaire réelle.
|
||||
|
||||
`clean` est une opération de maintenance et MUST NOT précéder automatiquement chaque validation.
|
||||
|
||||
## Outputs, état local et Git
|
||||
|
||||
Les sorties Maven usuelles sous `target/` ne sont pas versionnées.
|
||||
|
||||
Les métadonnées IDE spécifiques à une machine restent ignorées sauf exception explicitement partagée selon les règles générales du projet.
|
||||
|
||||
Les wrappers retenus sont une exception volontaire : ils peuvent être générés par l'outil, mais leurs fichiers nécessaires au bootstrap reproductible sont versionnés.
|
||||
|
||||
Les fichiers locaux contenant chemins machine, credentials, secrets ou overrides développeur restent hors Git. Un template est ajouté uniquement lorsqu'un utilisateur doit réellement préparer une valeur non régénérée automatiquement.
|
||||
|
||||
## Validation et futurs audits PGR
|
||||
|
||||
Les catégories et l'autorité du gate restent possédées par [`400-VALIDATION.md`](400-VALIDATION.md).
|
||||
|
||||
PGR lui-même ne possède actuellement aucun projet Maven exécutable à compiler. Aucune commande Maven n'est donc ajoutée aux gates documentaires de PGR uniquement pour exercer le présent profil.
|
||||
|
||||
Aucun audit Maven n'est créé uniquement pour matérialiser un outil. Lorsqu'un skeleton ou projet réel fournira un sujet stable, un audit monotâche MAY vérifier une propriété objectivement structurelle non mieux contrôlée par Maven lui-même, par exemple la cohérence `VERSION`/POM ou un héritage de politique. Il reste read-only et ne lance jamais Maven à la place de ses gates propres.
|
||||
Reference in New Issue
Block a user