Apache Maven

Apache Maven
VývojářApache Software Foundation
První vydání30. března 2002
Aktuální verze3.9.6 (1. prosince 2023)
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

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

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/javaobsahuje kompilovatelné .java soubory
src/main/resourcesobsahuje další soubory, například konfigurační XML
src/test/javaobsahuje třídy testů
src/test/resourcesobsahuje 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

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.

Pluginy

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

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

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ě.

Reference

  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

Média použitá na této stránce

Maven logo.svg
Autor: Apache Software Foundation, Licence: Apache License 2.0
Apache Maven logo.