Maven: Životní cyklus, fáze a cíle

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žky target).
  • 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í (default lifecycle):
    • validate
    • compile
    • test
    • package (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íl compiler:compile (z pluginu maven-compiler-plugin).
    • Když zavoláte fázi package, Maven automaticky spustí cíl jar:jar (z pluginu maven-jar-plugin).


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:

XML
<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:

  1. Definici pluginu maven-compiler-plugin.
  2. Globální <configuration> (např. nastavení verze Javy).
  3. 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.

Napsat komentář