Blogg

Här finns tekniska artiklar, presentationer och nyheter om arkitektur och systemutveckling. Håll dig uppdaterad, följ oss på LinkedIn

Callista medarbetare 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!

Tack för att du läser Callistas blogg.
Hjälp oss att nå ut med information genom att dela nyheter och artiklar i ditt nätverk.

Kommentarer