Apache Ant nám sloužil od začátku firmy. Kazdy projekt měl svůj build.xml, peclive ručně udrzovany, s desítkami targetů. S patnácti aktivními projekty a šesti vývojáři se to stalo neudrzitelnym. Nový člověk strávil prvni den jen pochopením build procesu.
Proc Maven a ne Gradle?¶
Gradle v roce 2011 existuje, ale je relativně mladý a v enterprise Java svete ho skoro nikdo nepoužívá. Maven 3 je stabilní, má obrovsy ekosystem pluginů a většina IDE ho podporuje out of the box. Convention over configuration je presne to, co potřebujeme. Standardní adresářová struktura (src/main/java, src/test/java) znamená, ze kazdy vývojář okamzite vi, kde co hledat.
Strategie migrace¶
Migrovat všech patnáct projektu najednou by bylo silenstvi. Rozhodli jsme se pro postupný pristup: nejdřív firemni Nexus repository, pak sdílené knihovny, mensi projekty a nakonec velke multi-module projekty. Celá migrace trvala tri měsíce.
Nexus jako firemni repository¶
Nexus OSS je základ celého ekosystému. Funguje jako proxy pro Maven Central, hostuje naše interni artefakty a umožňuje staging pro release proces. Konfigurace proxuje Maven Central, JBoss repository a Oracle Maven repository pro JDBC drivery.
Největší problemy¶
Transitivni zavislosti. Kdyz přidáte jednu závislost, Maven automaticky stáhne vsechny její zavislosti. Výsledek? WAR soubor s 200 JAR soubory, z nichž některé jsou v konfliktu. Řešení: mvn dependency:tree a liberalni použití exclusions. Vytvořili jsme firemni parent POM s dependencyManagement sekci.
Oracle JDBC driver. ojdbc6.jar není v Maven Central kvůli licencnim omezením. Museli jsme ho ručně nahrát do Nexusu.
Multi-module projekty¶
Naše největší aplikace měla v Antu jeden obrovsy build.xml s 2000 řádky. V Mavenu jsme ji rozlozili na moduly: core, persistence, service, web, ear. Build celého projektu: mvn clean package. Sedm minut včetně testu. S Antem to bylo patnáct minut.
Závěrem¶
Migrace z Antu na Maven je investice, která se vrátí během měsíců. Standardní build proces, automaticke dependency management a integrace s CI serverem dramaticky zrychlily nas development cyklus.
Potřebujete pomoc s implementací?
Naši experti vám pomohou s návrhem, implementací i provozem. Od architektury po produkci.
Kontaktujte nás