Foto av Björn Beskow

Aggregering av rapporter i Maven 2

// Björn Beskow

När jag först tittade på Maven2 för snart 2 år sedan, kändes de flesta områdena väl genomtänkta. Det var en välsignelse att slippa knacka Jelly-script för att skapa enkla pluginer - det gör man betydligt enklare med en Ant-baserad plugin i Maven2, eller t.o.m. med Maven2s antrun-plugin som kan köra inbäddade ant-script. Den transitiva beroende-hanteringen är mycket behändig, om de jar-filer du beror av har deklarerat sina beroenden på ett sunt sätt. Komposita projekt fick en enhetlig, genomtänkt lösning, istället för Maven1s efterhandskonstruktion i multisite-pluginen.

Men det var just i fallet med komposita projekt och rapport-generering som det blev tvärstopp. De sätt vi använt i Maven1 för att aggregera upp rapporter (testutfall, testtäckning, Checkstyle-granskning m.m) från moduler till komponenter, och från komponenter till delsystem, var inte längre möjliga att använda. Maven2 kommer med en stelbent syn på byggordning, där ett föräldra-projekt alltid byggs före dess moduler. Det är naturligt för de flesta situationer, men blir orimligt för rapport-generering. Aggregering av rapporter upp till föräldra-projekt bygger ju på att modulernas rapporter genereras först, för att sedan kunna aggregeras på nivån över. Med en fin-granulär komponent-modell i ett större system gör det rapportgenereringen i princip oanvändbar för att få snabb överblick över tillståndet och kvaliteten i bygget. Detaljerna finns där, men utspridda i de enskilda modulerna. Detta faktum hindrade mitt dåvarande projekt från att gå över till Maven2.

Det är därför mycket glädjande att ett av Codehaus-projekten nu äntligen lyckats gå runt problemet. Deras dashboard-plugin ger en aggregerad, lättläst rapport där det är enkelt att borra sig ner till detaljer. Den hanterar samtliga rapporter jag normalt använt: JUnit-tester, Cobertura-kodtäckning, Checkstyle och JDepend-mätetal.

Bild saknas

Pluginen är fortfarande kvar i Codehaus “sandlåda”, och finns därför ännu bara i SNAPSHOT-version. Trots några oslipade detaljer (den faktiska aggregeringen måste fortfarande göras i två steg, p.g.a. ordningsföljden mellan projekten) fungerar den klockrent. Snyggt jobbat!

Kommentarer