73 lines
3.7 KiB
Markdown
73 lines
3.7 KiB
Markdown
# AP02 – Build-Infrastruktur härten
|
||
|
||
## Ziel
|
||
|
||
Die `pom.xml` so erweitern, dass alle für M1 und die späteren Quality-Gates in M9 benötigten Bausteine bereitstehen, ohne schon Funktionalität zu implementieren. Dazu gehören **SLF4J als Fassade** (verlangt von `technik-und-architektur.md`), **JaCoCo** und **PIT** für die differenzierten Qualitätsgates, sowie das **maven-jar-plugin** für ein ausführbares JAR.
|
||
|
||
## Voraussetzungen
|
||
|
||
- AP01 abgeschlossen
|
||
|
||
## Scope IN
|
||
|
||
- `pom.xml` ergänzen um:
|
||
- **SLF4J API** (`org.slf4j:slf4j-api`) als Compile-Dependency
|
||
- **log4j-slf4j2-impl** (`org.apache.logging.log4j:log4j-slf4j2-impl`) als Runtime-Bindung (SLF4J → Log4j2)
|
||
- **maven-jar-plugin** mit `Main-Class` = Bootstrap-Klasse (Name ist zu diesem Zeitpunkt noch offen, Platzhalter eintragen, in AP06 final setzen)
|
||
- **jacoco-maven-plugin** für Coverage, an `verify` gebunden, **ohne** harte Schwellwerte in M1 (die kommen erst in M9)
|
||
- **pitest-maven** als optionales Ziel (`mvn -P mutation test`), ebenfalls **ohne** harte Schwelle in M1
|
||
- **maven-surefire-plugin** bleibt wie bisher, ggf. Version aktualisieren falls nötig
|
||
- **Mockito als Java-Agent** in `maven-surefire-plugin` konfigurieren (via `argLine`), um die Warnung „Mockito self-attaching via ByteBuddy" aus AP01 zu beheben. Die dynamische Agent-Anbindung wird in künftigen JDK-Versionen nicht mehr erlaubt sein.
|
||
- `.editorconfig` im Repo-Root anlegen mit:
|
||
- UTF-8 als Default-Encoding für Quellcode
|
||
- LF als Zeilenende
|
||
- 4 Spaces Einrückung für Java
|
||
- `trim_trailing_whitespace = true`
|
||
- `insert_final_newline = true`
|
||
- `.gitattributes` anlegen:
|
||
- `* text=auto eol=lf`
|
||
- `*.bat text eol=crlf`
|
||
- `*.java text eol=lf`
|
||
- `*.md text eol=lf`
|
||
|
||
## Scope OUT
|
||
|
||
- Umstellung bestehender Klassen von Log4j2-API auf SLF4J (kommt in AP04)
|
||
- Einführung von Coverage-Schwellwerten (kommt erst in M9)
|
||
- Einführung von PIT-Schwellwerten (kommt erst in M9)
|
||
- Änderungen an Quellcode
|
||
- Änderungen an Tests
|
||
|
||
## Schritte
|
||
|
||
1. Branch `m1/ap02-build-infra` anlegen
|
||
2. SLF4J-Dependencies in `pom.xml` eintragen; **keine** Imports in Quellcode ändern
|
||
3. JaCoCo-Plugin eintragen, an `verify` binden
|
||
4. PIT-Plugin in Profil `mutation` eintragen
|
||
5. maven-jar-plugin eintragen mit Platzhalter `Main-Class` (Wert: `de.gecheckt.asv.bootstrap.Main` — wird in AP06 Realität)
|
||
6. `.editorconfig` und `.gitattributes` anlegen
|
||
7. `mvn clean verify` laufen lassen, muss grün sein
|
||
8. `mvn -P mutation test` laufen lassen, muss grün sein (PIT muss die bestehenden Tests durchkauen können, auch wenn noch kaum was da ist)
|
||
9. Commit `M1-AP02: Build-Infrastruktur härten (SLF4J, JaCoCo, PIT, JAR-Plugin)`
|
||
10. Abschlussbericht schreiben
|
||
|
||
## Abnahmekriterien
|
||
|
||
- `pom.xml` enthält: `slf4j-api`, `log4j-slf4j2-impl`, `maven-jar-plugin`, `jacoco-maven-plugin`, `pitest-maven`
|
||
- `mvn clean verify` ist grün
|
||
- `mvn -P mutation test` läuft ohne Fehler durch (Score ist **irrelevant** in M1)
|
||
- JaCoCo erzeugt einen Report unter `target/site/jacoco/`
|
||
- Mockito-Warnung „self-attaching via ByteBuddy" erscheint im Build-Log **nicht mehr**
|
||
- `.editorconfig` und `.gitattributes` liegen im Repo-Root
|
||
- keine Änderungen an `.java`-Dateien
|
||
- Abschlussbericht `berichte/AP02-bericht.md` liegt vor
|
||
|
||
## Rest-Risiken und offene Punkte
|
||
|
||
- Der `Main-Class`-Eintrag im JAR-Plugin zeigt bis AP06 auf eine Klasse, die noch nicht existiert. Das ist okay, solange das JAR-Plugin die Datei nicht beim Packen validiert. Alternativ bis AP06 auf die bestehende `AsvValidatorApplication` zeigen lassen und in AP06 umbiegen.
|
||
- PIT ohne Schwelle ist nur eine Trockenübung für M1. Die echten Schwellen werden in M9 aktiviert.
|
||
|
||
## Bericht
|
||
|
||
`docs/arbeitspakete/m1/berichte/AP02-bericht.md` nach `templates/ap-bericht.md`.
|