čtvrtek 9. prosince 2010

Maven content check plugin - JARy pod kontrolou

V HP i GoodData jsme řešili problém s obsahem našich WARu, EARu a dalších distribučních balíčků, ve kterých se nám poměrně neřízeným procesem objevovaly nové JARy, což při použití tranzitivních závislostí v Mavenu není jev zas až tolik vzácný. To byl problém ze dvou důvodů.

  • problémy s některýmy OSS licencemi. Pokud do vašeho produktu zatáhnete nějakou knihovnu s virální licencí může to znamenat, že vlastní zdrojový kód musíte open sourcovat pod tou samou licencí. Jiné licence mají zase problém s tím, že se na ně váže IP, především patenty. Pokud použijete licenci, která má určitý výklad týkající se patentů, může se stát, že se tím automatický vzdáváte vámi držených patentů souvisejících s danou knihovnou.
  • problémy s tím, že někdo se rozhodně použít knihovnu XYZ a vy přitom ve zbytku produktu používáte knihovny jinou.

Tyto problémy se dají vyřešit poměrně jednoduchým způsobem. Máte autoritativní seznam souborů, který se může v daném archivu vyskytovat. Tento seznam kontroluje Maven Content Check Plugin a v případě, že archív obsahuje něco jiného, build selže s detailním výstupem, které konkrétní soubory nesedí. Konfigurace pluginu a formát autoritativního seznamu najdete v dokumentaci.

Plugin toho zatim moc neumí, za zmíňku stojí

  • dokáže ignorovat JARy, které produkujete vy a to podle obsahu jejich manifestu
  • dokáže reportovat i reverzní případ tedy že nějaké chybí

V dalších verzích pluginů se plánuje iniciální generování autoritativního seznamu podle obsahu archívu. Detekce typu licence pro daný JAR a její vypsání.