Základem Mavenu je standardizovaná posloupnost událostí, která zajišťuje, že každý projekt projde stejnými kroky – od kompilace až po distribuci.
1. Životní cyklus (Lifecycle)
Životní cyklus je pevně definovaná sekvence fází. Stanovuje „co“ se bude dít.
Maven má tři standardní, neměnné životní cykly:
default(Výchozí): Nejčastěji používaný. Zahrnuje hlavní kroky od ověření kódu po instalaci artefaktu.clean: Slouží k odstranění souborů vygenerovaných během předchozího sestavení (např. složkytarget).site: Slouží k vygenerování a nasazení dokumentace projektu.
2. Fáze (Phase)
Fáze je abstraktní krok v rámci životního cyklu. Fáze je jen pojmenovaný bod v sekvenci (např. compile, test, package).
- Sekvence: Fáze musí být spouštěny v pevném pořadí. Když v příkazové řádce zavoláte konkrétní fázi (např.
mvn package), Maven spustí celý životní cyklus až po tuto fázi, včetně všech fází, které jí předcházejí. - Příklady fází (
defaultlifecycle):validatecompiletestpackage(vytvoří JAR/WAR soubor)install(zkopíruje artefakt do lokálního Maven repozitáře)
3. Cíl (Goal)
Cíl je konkrétní úloha, kterou vykonává plugin. Cíl představuje „jak“ se fáze provede.
- Identifikace: Cíl se vždy uvádí ve formátu
plugin-name:goal-name. - Spuštění: Cíl lze spustit přímo z příkazové řádky (např.
mvn compiler:compile), což umožňuje provádět izolované akce.
Vztah: Fáze a Cíl (Binding)
Fáze se stane funkční až ve chvíli, kdy je k ní vázán (bound) jeden nebo více cílů pluginů.
- Příklad vazby (binding):
- Když zavoláte fázi
compile, Maven automaticky spustí cílcompiler:compile(z pluginumaven-compiler-plugin). - Když zavoláte fázi
package, Maven automaticky spustí cíljar:jar(z pluginumaven-jar-plugin).
- Když zavoláte fázi
Co je Maven Plugin a jak vypadá?
Maven Plugin je specializovaný JAR soubor obsahující sady Java tříd, které implementují cíle (goals). Je to základní stavební kámen celé Maven architektury.
Složení pluginu
Každý plugin se skládá z jedné nebo více tříd zvaných Mojo (Maven Plain Old Java Object). Každé Mojo implementuje jeden cíl (goal).
Deklarace a konfigurace v pom.xml
Váš projekt využívá pluginy buď implicitně (výchozí vazby) nebo explicitně. Explicitní konfigurace vypadá takto:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.12.1</version>
<configuration>
<source>21</source>
<target>21</target>
</configuration>
<executions>
<execution>
<id>default-compile</id>
<phase>compile</phase> <goals>
<goal>compile</goal> </goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
V tomto příkladu vidíme:
- Definici pluginu
maven-compiler-plugin. - Globální
<configuration>(např. nastavení verze Javy). - Sekci
<executions>, která explicitně váže (binds) cíl<goal>compile</goal>na fázi<phase>compile</phase>v životním cyklu.
Text a grafika byly vygenerovány modelem Gemini (Google). Následně upraveno autorem.
