Lekce 1 - Úvod do vývojového nástroje Maven
Vítejte v kurzu věnovaném balíčkovacímu systému Maven. V dnešním tutoriálu si uvedeme, co to Maven je, co umí a k čemu slouží. Také si řekneme, jak se ovládá a jaké jsou jeho alternativy.
Minimální požadavky kurzu
Pro úspěšné absolvování kurzu a pro správné pochopení celé problematiky předpokládáme:
- Základní znalosti práce s PC a orientace v operačním systému,
- absolvování kurzu Základní konstrukce jazyka Java a kurzu Objektově orientované programování v Javě.
K čemu Maven slouží
S pojmem Maven jsme se již setkali při zakládání projektu v kurzu Základní konstrukce jazyka Java, kdy jsme z nabídky projektů vybírali položku Java with Maven.
Maven je pomocný nástroj, který programátoři v Javě používají k zjednodušení a k automatizaci své každodenní práce s projektem, na němž pracují. Těchto činností je poměrně hodně od kompilace zdrojových kódů, vygenerování dokumentace, zabalení aplikace do distribučního balíčku až po nahrání aplikace na server, kde má běžet. Všechny tyto činnosti by se samozřejmě daly zvládnout nastavit bez použití Mavenu. Ale daleko snadnější a pohodlnější je zaúkolovat Maven.
Představme si například, že máme aplikaci, která obsahuje
už několik desítek tříd v několika balíčcích. Ty jsou
uložené v několika podadresářích a my je chceme všechny
zkompilovat. Procházet všechny podadresáře se zdrojovými kódy a dělat to
pomocí příkazu javac
není úplně pohodlné. Naštěstí
můžeme říct Mavenu, že chceme zkompilovat všechny
naše zdrojové kódy v projektu a on se o to
postará.
Maven je navržen tak, že veškerou svoji činnost provádí pomocí pluginů. Je to v podstatě pouze takový spouštěč pluginů. Jednotlivé pluginy mají na starost vždy nějakou konkrétní činnost. Těchto pluginů je relativně velké množství. Pokrývají snad všechny myslitelné činnosti, které bychom jako programátoři chtěli s projektem provádět. Pojďme se tedy podívat alespoň na ty nejzákladnější činnosti, které Maven obstarává.
Maven budovatel
Maven má především na starosti automatizaci převádění aplikace ze zdrojového kódu do spustitelné podoby. Jistě už všichni víme, že zdrojový kód aplikace je před spuštěním potřeba pomocí kompilátoru zkompilovat. Ve svém IDE toho dosáhneme stiskem jediného tlačítka, ale už nevidíme, co se stane na pozadí. IDE následně zavolá Maven a ten provede vše potřebné. Tomuto procesu se říká build a Maven je proto často označován také jako buildovací nástroj.
Maven organizátor
Kromě buildu aplikace neboli sestavení projektu má Maven na
starosti i samotné založení projektu, v rámci něhož
aplikaci píšeme. Určitě jsme si všimli, že při vytvoření nového
projektu typu se nám v IDE vytvoří i jeho základní adresářová struktura
s podadresáři jako src/main/java/
a src/main/test/
.
Dokonce zde při použití Netbeans nalezneme soubor s
ukázkovým Hello world! programem (při použití
Intellij se vytvoří, pouze pokud zaškrtneme políčko
Add sample code při vytváření projektu). Toto všechno je práce
Mavenu.
Maven používá k vygenerování nového projektu tzv. archetypy. Ty si můžeme představit jako jakési šablony. Archetyp použitý v IDE pro základní projekt v místních lekcích pro začátečníky je jenom jeden z mnoha. Maven má archetypy pro nepřeberné množství typů dalších aplikací. Jejich seznam si můžeme snadno v našem IDE prohlédnout:
-
Stačí si v Netbeans při zakládání nového projektu vybrat Java with Maven - Project from Archetype a můžeme si prohlédnout jejich seznam:
-
Stačí si v Intellij při zakládání nového projektu vybrat v okně New Project generator Maven archetype a změnit Catalog na Maven Central a jejich seznam vidíme po rozkliknutí Archetype:
Maven knihovník
Bezesporu jednou z nejužitečnějších vlastností Mavenu je schopnost spravovat knihovny, které naše aplikace potřebuje ke svému běhu. Existuje totiž volně dostupný repositář Java knihoven, tzv. Maven repository. Z něj Maven umí na požádání stáhnout a přidat do našeho projektu knihovny dle našich potřeb. Jediné, co musíme udělat, je specifikovat, jaké knihovny a v jakých verzích chceme. Maven pak obstará všechno potřebné, abychom ji mohli využívat v naší aplikaci.
Jak do našeho projektu přidáme knihovnu z Maven repository, si ukážeme v některé z následujících lekcí.
Alternativy k Mavenu
Momentálně jsou v Javě ještě používané dva další podobné nástroje:
- Ant
- a Gradle.
Ant
Ant je již poměrně letitý buildovací nástroj, nicméně pořád se používá. Na rozdíl od Mavenu nedisponuje žádnou obdobou Maven Repository a vyžaduje manuální správu knihoven. Také nevynucuje žádnou defaultní adresářovou strukturu projektu. Tu pak musíme definovat v příslušném XML souboru.
Gradle
Gradle zpopularizovalo především Android Studio, které jej používá jako defaultní buildovací nástroj. Gradle umí používat Maven Repository a od Mavenu se liší především způsobem konfigurace. Zatímco Maven se konfiguruje pomocí XML souboru, Gradle používá ke své konfiguraci programovací jazyk Groovy.
Ovládání Mavenu
Maven je nástroj pro příkazovou řádku počítače.
Používá se tak, že se na příkazové řádce zavolá příkaz
mvn
s potřebnými parametry. Nicméně všechna
nejpoužívanější IDE obsahují podporu Mavenu, takže jako
programátoři jsme při každodenní práci od tohoto oproštěni a ovládáme
jej přímo z IDE.
Přesto je velmi dobré znát alespoň základy práce s příkazovou řádkou. Někdy nám totiž podpora v IDE nemusí stačit, nebo zrovna nemáme žádné IDE po ruce. V tomto seriálu se zaměříme právě na práci z příkazové řádky, ale budeme si průběžně také ukazovat, jak bychom totéž udělali přímo v IDE.
V následující lekci, Instalace Mavenu a tvorba prvního projektu, se naučíme pracovat s Mavenem z příkazové řádky. Ukážeme si, jak jej na našem počítači zprovoznit a jak s jeho pomocí vytvořit první projekt.