Co je Apache Maven?

Apache Maven je nástroj pro správu projektů a automatizaci sestavování (build process), používaný převážně pro projekty v Javě. Jeho hlavním cílem je:

  1. Standardizovat sestavování: Zajistit, aby se každý projekt sestavoval stejným, konzistentním způsobem.
  2. Zjednodušit správu závislostí: Automaticky stahovat a spravovat externí knihovny.
  3. Použít konvence: Řídí se principem konvence nad konfigurací (convention over configuration), což znamená, že projekty mají mít standardní strukturu, čímž se minimalizuje složitá konfigurace.

Základní názvosloví Mavenu

Zde jsou klíčové pojmy, které definují, jak Maven funguje:

1. Jádro projektu a soubory

  • POM (pom.xml): Zkratka pro Project Object Model. Jedná se o XML soubor, který je centrální konfigurační jednotkou každého Maven projektu. Definuje název projektu, jeho verzi, závislosti, pluginy a build proces.
  • Artefakt (Artifact): Je výsledek Maven buildu. Obvykle se jedná o soubor JAR, WAR nebo EAR, který je připraven k distribuci nebo nasazení. Každý artefakt je v repozitáři jednoznačně identifikován trojicí: GroupId, ArtifactId a Version.

2. Proces a životní cyklus

  • Plugin (Plugin): Je základní jednotka práce v Mavenu. Jde o specializovanou sadu Java tříd, která provádí konkrétní úkoly (např. kompilaci, testování, balení). Maven je v podstatě rámec pro spouštění pluginů.
  • Cíl (Goal): Je konkrétní úloha v rámci pluginu. Je to nejmenší vykonatelná jednotka práce.
    • Příklad: Plugin maven-compiler-plugin má cíl (goal) zvaný compile.
  • Fáze (Phase): Je abstraktní krok v sekvenci sestavení. Fáze představuje logický milník, např. compile, test, nebo package. Fáze samy o sobě nic nedělají, ale jsou cílovými body, ke kterým se vážou cíle pluginů.
  • Životní cyklus (Lifecycle): Je pevně daná sekvence fází. Když zavoláte fázi (např. mvn package), Maven spustí celý životní cyklus až do této fáze. Tři hlavní životní cykly jsou:
    1. default: Hlavní cyklus (kompilace, testování, balení, instalace).
    2. clean: Odstranění vygenerovaných souborů.
    3. site: Generování dokumentace.

3. Správa závislostí a konfigurace

  • Závislost (Dependency): Externí knihovna (JAR soubor), kterou váš projekt potřebuje ke kompilaci nebo běhu (např. Spring Framework, Log4j). Uvádí se v sekci <dependencies>.
  • <dependencyManagement>: Sekce v POMu určená k centrálnímu řízení verzí závislostí. Zde se definují verze, ale závislost se neaktivuje. Tuto sekci používají hlavně nadřazené (parent) POMy.
  • <pluginManagement>: Sekce pro centrální řízení verzí a konfigurace pluginů.

Jak funguje vztah Fáze a Cíle?

Vztah je založen na vazbě (binding):

  • Když zadáte příkaz mvn compile, dáváte příkaz k provedení fáze compile.
  • Maven ví, že k fázi compile je pro váš typ projektu (např. JAR) automaticky vázán cíl compiler:compile.
  • Maven spustí tento cíl, a ten provede kompilaci.

Tím se zajišťuje, že volání standardních fází vždy vede ke standardním akcím, bez ohledu na to, jaké pluginy a cíle je zrovna vykonávají.


Text a grafika byly vygenerovány modelem Gemini (Google). Následně upraveno autorem.

Napsat komentář