IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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:

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:

    Seznam Maven archetypů v Netbeans - Maven
  • 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:

    Seznam Maven archetypů v Intellij - Maven

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.


 

Všechny články v sekci
Maven
Přeskočit článek
(nedoporučujeme)
Instalace Mavenu a tvorba prvního projektu
Článek pro vás napsal Atrament
Avatar
Uživatelské hodnocení:
17 hlasů
Aktivity