Apache Maven

Apache Maven
Logo
VývojářApache Software Foundation
První vydání30. března 2002
Aktuální verze3.9.9 (18. srpna 2024)
Operační systémmultiplatformní
PlatformaJava Virtual Machine
Vyvíjeno vJava
Typ softwaruBuild tool
LicenceApache Licence 2.0
Webhttp://maven.apache.org
Některá data mohou pocházet z datové položky.

Apache Maven je nástroj pro správu, řízení a automatizaci buildů aplikací. Ačkoliv je možné použít tento nástroj pro projekty psané v různých programovacích jazycích, podporován je především jazyk Java.

Název maven pochází z jidiš a znamená „znalec“.[1] Maven byl vytvořen jako nástroj pro zjednodušení buildů pro projekt Jakarta Turbine. Hlavním impulzem pro vznik byla snaha o standardizaci a znovupoužitelnost buildovacích skriptů, která v tehdy používaném nástroji Apache Ant nebyla plně podporována.[2]

Cíle aplikace

[editovat | editovat zdroj]

Maven je navržen pro usnadnění práce při buildování aplikací a agendou s tím spojenou. Jeho tvůrci určili pět oblastí, které by měl Maven pokrývat.

  • Usnadnění procesu buildování,
  • jednotný systém buildování,
  • poskytování kvalitních informací o projektu,
  • poskytování direktiv pro „best practices“,
  • poskytnutí transparentního přidávání nových funkcí.

Struktura aplikace

[editovat | editovat zdroj]

Základním principem fungování Mavenu je popsání projektu pomocí Project Object Model. Tento model popisuje softwarový projekt nejen z pohledu jeho zdrojového kódu, ale včetně závislostí na externích knihovnách, popisu procesu buildování a různých funkcí s tím spojených (jako je spouštění testů, sbírání informací o zdrojových kódech a podobně).

Maven sám je postaven na modulární architektuře a funguje na principu volání jednotlivých pluginů. Maven sám pouze obstarává dodání a spuštění nadefinovaných pluginů. Maven nemá žádné vlastní grafické uživatelské rozhraní a běží pouze na příkazové řádce a pluginy tak mohou využívat všechny nástroje, které dokáží komunikovat pomocí standardních vstupů.

Výchozí nastavení Mavenu vyžaduje následující adresářovou strukturu:

Adresář Popis
Kořenový adresář obsahuje pom.xml ostatní adresáře
src/main/java obsahuje kompilovatelné .java soubory
src/main/resources obsahuje další soubory, například konfigurační XML
src/test/java obsahuje třídy testů
src/test/resources obsahuje konfigurační soubory pro testy

Ačkoliv je tato struktura obecně doporučována, je možné ji změnit pomocí konfigurace v pom.xml

Project Object Model

[editovat | editovat zdroj]

Project Object Model je koncept popisu projektu jako objektu. Za tímto účelem je definovaná jednoduchá XML struktura, která definuje jednotlivé části projektu a jeho závislosti na externích knihovnách a nástrojích. Současně je možné definovat konstanty, které pak mohou využít jednotlivé pluginy. Tento XML dokument se nachází v kořenovém adresáři projektu a je pojmenován pom.xml. Pokud je projekt složen z více dílčích projektů nebo modulů, každý z nich má pak svůj vlastní pom.xml soubor, který dědí vlastnosti od nadřazeného souboru a může přidávat další položky. Díky této struktuře je pak možné sestavit celý projekt jediným příkazem.

Minimální kostra pom.xml může být například následující:

<project>
 <modelVersion>4.0.0</modelVersion>
 
 <!-- identifikátory projektu -->
 
 <groupId>com.mycompany.app</groupId>
 <artifactId>my-app</artifactId>
 <version>1.0</version>

 <!-- závislosti na externích knihovnách -->
 
 <dependencies>
 <dependency>
 
 <!-- upřesnění konkrétní knihovny -->
 
 <groupId>junit</groupId>
 <artifactId>junit</artifactId>
 <version>3.8.1</version>
 
 <!-- definice oblasti použití knihovny -->
 
 <scope>test</scope>
 
 </dependency>
 </dependencies>
</project>

Takovýto projekt může pak být kompilován a mohou být na něm spouštěny JUnit testy. Maven sám se postará o dodání potřebných knihoven.

Všechny pluginy jsou volány jednoduchým příkazem mvn [název_pluginu]:[goal]. Goal je prakticky označení funkce pluginu, která je volána.

Příkladem takového příkazu může být kompilace projektu:[3] mvn compiler:compile

Jelikož při sestavování aplikace je obvykle voláno více takovýchto pluginů, bylo by nepraktické volat každý samostatně. Z tohoto důvodu Maven definuje Build Lifecycle (životní cyklus buildu). Každý plugin pak může být asociován s některou z těchto fází.

Build LifeCycle

[editovat | editovat zdroj]

Maven umožňuje rozdělit proces buildu do více fází. Tento přístup umožňuje nejen automaticky spouštět pluginy, ale také specifikovat fázi, ve které má Maven skončit. Například nám během vývoje stačí zkompilovat zdrojové kódy a otestovat je bez deploye aplikace na server.

Výchozí cyklus maven je nastaven takto:

  • process-resources
  • compile
  • process-test-resources
  • test-compile
  • test
  • package
  • install
  • deploy

Dependencies

[editovat | editovat zdroj]

V pom.xml je možné u každého projektu nadefinovat jeho závislosti na externích knihovnách. Jednotlivé prvky Artifacts jsou jednoznačně definovány podle atributů <groupId> a <artifactId>. Maven pak automaticky vyhledá a nainstaluje potřebné knihovny. Samotné vyhledávání probíhá v definovaných úložištích (repository). Kromě globální maven repository,[4] která je veřejně přístupná, je možné založit i další soukromá nebo firemní úložiště.

  1. http://maven.apache.org/what-is-maven.html
  2. http://maven.apache.org
  3. Maven Compiler Plugin
  4. Maven 2 Central Repository. repo1.maven.org [online]. [cit. 2010-06-24]. Dostupné v archivu pořízeném dne 2018-09-17. 

Externí odkazy

[editovat | editovat zdroj]