163 lines
6.1 KiB
Markdown
163 lines
6.1 KiB
Markdown
<!-- file: deltas/0.0.2/alpha.4.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta 0.0.2-alpha.4 — profil Java / Maven / Gradle
|
|
|
|
## Baseline
|
|
|
|
Version attendue avant application :
|
|
|
|
```text
|
|
0.0.2-alpha.3
|
|
```
|
|
|
|
Le history `history/0.0.2/alpha.3.md` MUST avoir été appliqué et committé avant ce delta.
|
|
|
|
Version après application :
|
|
|
|
```text
|
|
0.0.2-alpha.4
|
|
```
|
|
|
|
## Objet
|
|
|
|
Matérialiser le deuxième profil technologique de PGR : `Java / Maven / Gradle`.
|
|
|
|
Cette tranche conserve une frontière explicite entre :
|
|
|
|
```text
|
|
Java
|
|
→ règles du langage et de l'API
|
|
|
|
Maven / Gradle
|
|
→ spécialisations de build
|
|
|
|
Android / frameworks futurs
|
|
→ contraintes plus spécifiques qui pourront surcharger localement Java ou Gradle
|
|
```
|
|
|
|
Aucune règle Android, AGP, SDK, `minSdk`, `targetSdk`, `versionCode`, APK/AAB ou JNI n'est absorbée dans ce profil.
|
|
|
|
## Réconciliation retenue
|
|
|
|
Le profil reprend les principes déjà établis par PGR et les corpus de conception revus pour cette release :
|
|
|
|
- JDK LTS par défaut, dernière LTS compatible utilisée en priorité ;
|
|
- bascule vers une LTS plus ancienne lorsqu'une dépendance ou un outil l'exige ;
|
|
- non-LTS uniquement par exception justifiée ;
|
|
- séparation entre JDK de build et niveau Java/runtime supporté ;
|
|
- structure standard `src/main/java`, `src/main/resources`, `src/test/java`, `src/test/resources` ;
|
|
- packages orientés responsabilités et visibilité minimale ;
|
|
- imports explicites ;
|
|
- interfaces uniquement lorsqu'une vraie frontière existe ;
|
|
- pas de Lombok/convenience codegen implicite par défaut, sans interdire les annotations fonctionnelles de frameworks ;
|
|
- nullabilité et exceptions explicites ;
|
|
- tests unitaires/intégration/environnement séparables ;
|
|
- politique Maven centralisée dans le parent/root ;
|
|
- `dependencyManagement` / `pluginManagement` utilisés pour la politique commune sans ajouter artificiellement les dépendances aux modules ;
|
|
- Maven Wrapper conditionnel selon le besoin de reproductibilité ;
|
|
- configuration Gradle commune centralisée ;
|
|
- version catalog Gradle uniquement si la complexité le justifie ;
|
|
- contrainte Gradle exprimée comme minimum, range, pin exact ou latest compatible selon la vraie matrice ;
|
|
- Gradle Wrapper recommandé lorsqu'il apporte une reproductibilité réelle, sans interdire un Gradle système explicitement contraint ;
|
|
- un DSL Gradle cohérent par projet, sans transformer Groovy/Kotlin DSL en préférence de langage applicatif ;
|
|
- tâches ciblées pendant le développement, gates globales lorsque leur preuve devient utile ;
|
|
- `clean` traité comme maintenance ;
|
|
- outputs/caches/état local hors Git, avec wrappers comme exception volontaire lorsqu'ils sont retenus.
|
|
|
|
## Profil créé
|
|
|
|
Le nouveau propriétaire normatif est :
|
|
|
|
```text
|
|
docs/rules/520-JAVA_MAVEN_GRADLE.md
|
|
```
|
|
|
|
Il complète la famille `500 — languages / ecosystems` et n'introduit pas de nouvelle famille de navigation.
|
|
|
|
Aucun audit Java/Maven/Gradle n'est ajouté : le dépôt PGR ne contient actuellement aucun projet de ce type sur lequel une telle gate fournirait une preuve réelle.
|
|
|
|
## Scope
|
|
|
|
REPLACE :
|
|
|
|
```text
|
|
VERSION
|
|
RULES.md
|
|
docs/rules/000-README.md
|
|
```
|
|
|
|
ADD :
|
|
|
|
```text
|
|
docs/rules/520-JAVA_MAVEN_GRADLE.md
|
|
deltas/0.0.2/alpha.4.md
|
|
```
|
|
|
|
DELETE : aucun.
|
|
|
|
Aucun manifest de suppression n'est nécessaire.
|
|
|
|
## Validation opérateur
|
|
|
|
```bash
|
|
test "$(cat VERSION)" = "0.0.2-alpha.4"
|
|
|
|
test -f docs/rules/520-JAVA_MAVEN_GRADLE.md
|
|
test -f deltas/0.0.2/alpha.4.md
|
|
|
|
grep -F 'le JDK de développement SHOULD être une version LTS' docs/rules/520-JAVA_MAVEN_GRADLE.md
|
|
grep -F 'JDK utilisé pour construire' docs/rules/520-JAVA_MAVEN_GRADLE.md
|
|
grep -F 'src/main/' docs/rules/520-JAVA_MAVEN_GRADLE.md
|
|
grep -F 'Lombok et les outils équivalents de convenience/codegen implicite SHOULD NOT être utilisés par défaut' docs/rules/520-JAVA_MAVEN_GRADLE.md
|
|
grep -F 'Le fichier PGR `VERSION` reste la version canonique de l' docs/rules/520-JAVA_MAVEN_GRADLE.md
|
|
grep -F 'PGR MUST NOT ajouter un Maven Wrapper uniquement par cérémonie.' docs/rules/520-JAVA_MAVEN_GRADLE.md
|
|
grep -F 'minimum seulement' docs/rules/520-JAVA_MAVEN_GRADLE.md
|
|
grep -F 'Un Gradle Wrapper SHOULD être versionné lorsqu' docs/rules/520-JAVA_MAVEN_GRADLE.md
|
|
grep -F 'Groovy DSL et Kotlin DSL sont tous deux reconnus.' docs/rules/520-JAVA_MAVEN_GRADLE.md
|
|
grep -F 'gradle clean` est une opération de maintenance' docs/rules/520-JAVA_MAVEN_GRADLE.md
|
|
grep -F 'Aucune commande Maven/Gradle n' docs/rules/520-JAVA_MAVEN_GRADLE.md
|
|
|
|
grep -F '520-JAVA_MAVEN_GRADLE.md' RULES.md
|
|
grep -F '520-JAVA_MAVEN_GRADLE.md' docs/rules/000-README.md
|
|
|
|
python3 -B scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs deltas history prompts
|
|
|
|
git diff --check
|
|
|
|
git add VERSION RULES.md docs/rules/000-README.md docs/rules/520-JAVA_MAVEN_GRADLE.md deltas/0.0.2/alpha.4.md
|
|
|
|
git diff --cached --check
|
|
|
|
git status --short
|
|
```
|
|
|
|
La sortie attendue avant ajout du history est :
|
|
|
|
```text
|
|
M RULES.md
|
|
M VERSION
|
|
A deltas/0.0.2/alpha.4.md
|
|
M docs/rules/000-README.md
|
|
A docs/rules/520-JAVA_MAVEN_GRADLE.md
|
|
```
|
|
|
|
Revue opérateur complémentaire :
|
|
|
|
- confirmer que les règles Java restent distinctes des contraintes propres à Maven/Gradle ;
|
|
- confirmer que les contraintes Android restent hors de ce profil et pourront surcharger localement Gradle/JDK en `alpha.5` ;
|
|
- confirmer que la politique JDK privilégie les LTS sans pin exact arbitraire ;
|
|
- confirmer que Lombok/convenience codegen est distingué des annotations fonctionnelles de frameworks ;
|
|
- confirmer que Maven Wrapper et Gradle Wrapper sont des choix de reproductibilité justifiés, pas des obligations cérémonielles universelles ;
|
|
- confirmer qu'aucune commande Maven/Gradle réelle n'est exigée pour valider cette tranche documentaire dans le dépôt PGR lui-même.
|
|
|
|
## Transition
|
|
|
|
### PASS
|
|
|
|
Créer et appliquer séparément `history/0.0.2/alpha.4.md`, committer la tranche, puis préparer `0.0.2-alpha.5` consacré au profil plateforme Android.
|
|
|
|
### FAIL
|
|
|
|
Rester dans `0.0.2-alpha.4.fix.M` tant que les frontières Java/build tool ou les politiques de compatibilité restent incorrectes. Effectuer un REPLAN si la tranche révèle une dérive significative du scope.
|