čtvrtek 26. února 2009

Efektivita buildovacích nástrojů rozhoduje

Po té co jsem si pročetl článek Maven or Ant, který raději vůbec nečtěte neboť je plný nesmyslů, jsem se rozhodl, že letmo nakouknu na Gradle, jestli třeba náhodou ten Maven... Hned na úvodní stránce jsem si přečetl, že je to v podstatě přes Groovy obalený Ant s dependency managementem řešeným přes Ivy či Maven. Abych to zkrátil, po letmém prolétnutí Gradle user guide jsem spokojeně zavřel prohlížeč a řekl si, že touto cestou opravdu ne.

Gradle bude určitě skvělý systém, ale bohužel nenaplňuje jednu fundamentální potřebu, alespoň tedy co se mojí maličkosti týká. Nevím jestli to máte jinak, ale já od buidlovacího systému (degradujme na tento termín nástroje - Ant, Maven, Gradle, Gant atd.) očekávám především efektivitu vyjádřenou poměrem mé snahy oproti tomu co na mě vypadne.

Tím chci říci, že množina mnou aplikovaných případů užití je redukována na vytvoření projektu, kompilaci, puštění testů, zbuildování vysledného package a natažení projektu do IDE. Tečka, nic víc. Jízlivá otázka, potřebujeme vůbec něco víc? Odpověď nechám na Vás. Čím jednodušeji budou splněny tyto případy užití z pohledu buildovacího systému, oproti tomu co budu muset udělat, tím větší efektivitu my ten systém přinese.

Maven mi zatím přináší nejvyšší efektivitu. Už jenom vytvoření projektu přes archetype je otázka půl minuty. A od toho se samozřejmě odvíjí i další případy užití. Oproti tomu systémy jako Gradle nebo Ant mě nutí k něčemu co je mi ze srdce odporné a to k programování vlastního buildu. Kdy už konečně autoři těchto systémů pochopí, že jejich uživatelé nechtějí řešit takové problémy, že je někde potřeba uvádět (programování je jenom forma zápisu) cosi ohledně kompilace, packagingu apod. oni prostě ten systém chtějí používat!

Proto mám tak rád Maven. Jeho autoři totiž pochopili, že pro běžné developerské použití by měla být námaha s tím spojená rovna pokud možno nule. Samozřejmě pokud pomineme čtení nějakoho howto či dokumentace, které nás čeká při začátku používání jakékoliv nové technologie.