Poslední měsíc jsem strávil konverzí hromady Ant skriptů do Mavenu, cítím se tedy kvalifikován trochu si do Mavenu rýpnout. Předem chci upozornit, že si myslím, že Maven je nejlepší nástroj ve svém oboru dostupný pod open source licencí. Jenže jak kdosi chytrý řekl, to že je něco nejlepší ještě neznamená, že je to dobré.
Nedostatečná dokumentace
Asi největší chyba Mavenu je mizerná dokumentace. Trochu to zachraňuje volně dostupná kniha „Better builds with Maven“. I stránky projektu se za poslední dobu zlepšily. Stále ještě ale nejsou na dostatečné úrovni. Pokročilejší témata člověk musí hledat po různých konferencích a hlavně ve zdrojovém kódu. Ten stojí opravdu za to. Pokud někdo chcete vidět zdrojáky bez kousku JavaDocu, podívejte se do Mavenu. To je velká chyba, podle mě to hodně brání většímu zapojení komunity.
Špatná úroveň pluginů
Pluginy jsou to, na čem Maven stojí. Často je to ale i tím na čem Maven padá. Není neobvyklé, že plugin spadne a vyhodí kryptickou výjimku, z které člověk vůbec nepozná co se děje. Obvykle je chyba na straně uživatele, ale bez průzkumu zdrojových kódu je těžké přijít na to kde je a jak ji napravit. Často je také problém najít vhodný plugin na to, co zrovna člověk potřebuje. Pamatuji se, že když jsem hledal plugin na JAXB2, tak mi zafungoval až pátý nalezený.
Nekvalitní repository
Repository je další silná stránka Mavenu. Zároveň je to ale také jeho slabina. U projektů, které nejsou buildovány Mavenem je velká pravděpodobnost, že budou mít v repository špatná metadata. Zrovna dnes jsem narazil na to, že nejnovější hibernate-entitymanager závisí na verzi hibernate-commons-annotation, která není vůbec v centrálním repository. Tzn. není možné tuto knihovnu použít, aniž by člověk nestrávil nějaký čas hledáním, jak daný problém vyřešit. (V tomto případě použitím jboss repository.)
Na téma repository mám pár dalších příkladů. Oba se týkají Springu. Pokud se pokusíte zadat verzi Springu intervalem a ne přesnou, konkrétní verzí, tak vám Maven bude tvrdit, že nejnovější verze Springu je 2.0-m4. Může za to tento soubor. Stejně tak zamrzí, když se vám v IDE nezobrazí zdrojové kódy Springu, pokud nemáte závislost na celém Springu, ale jen na nějaké jeho části. Důvodem je zase nekompatibilní přístup autorů Springu a Mavenu.
Se všemi uvedenými problémy se člověk dokáže vyrovnat. Všechny ale dělají křivku učení hodně strmou. Pro člověka, který s Mavenem začíná a nemá nikoho kdo by mu pomohl, je neuvěřitelně těžké se přes počáteční obtíže dostat. Jediné čím se může utěšovat je to,že pokud je překoná, čeká ho kýžená odměna ve formě velké pomoci s build procesem.