3.7 KiB
3.7 KiB
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.xmlergä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
verifygebunden, 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-pluginkonfigurieren (viaargLine), 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.
- SLF4J API (
.editorconfigim 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 = trueinsert_final_newline = true
.gitattributesanlegen:* 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
- Branch
m1/ap02-build-infraanlegen - SLF4J-Dependencies in
pom.xmleintragen; keine Imports in Quellcode ändern - JaCoCo-Plugin eintragen, an
verifybinden - PIT-Plugin in Profil
mutationeintragen - maven-jar-plugin eintragen mit Platzhalter
Main-Class(Wert:de.gecheckt.asv.bootstrap.Main— wird in AP06 Realität) .editorconfigund.gitattributesanlegenmvn clean verifylaufen lassen, muss grün seinmvn -P mutation testlaufen lassen, muss grün sein (PIT muss die bestehenden Tests durchkauen können, auch wenn noch kaum was da ist)- Commit
M1-AP02: Build-Infrastruktur härten (SLF4J, JaCoCo, PIT, JAR-Plugin) - Abschlussbericht schreiben
Abnahmekriterien
pom.xmlenthält:slf4j-api,log4j-slf4j2-impl,maven-jar-plugin,jacoco-maven-plugin,pitest-mavenmvn clean verifyist grünmvn -P mutation testlä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
.editorconfigund.gitattributesliegen im Repo-Root- keine Änderungen an
.java-Dateien - Abschlussbericht
berichte/AP02-bericht.mdliegt 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 bestehendeAsvValidatorApplicationzeigen 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.