Apache Maven
Author
Albert FloresApache 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“. Maven byl vytvořen jako nástroj pro zjednodušení buildů pro projekt Jakarta Turbine. +more 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.
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. +more * 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ů. +more 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é . +morejava 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
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. +more 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í:
4.0.0
com.mycompany.app my-app 1.0
junit junit 3.8.1
test
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: 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). +more 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. +more 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. +more Jednotlivé prvky Artifacts jsou jednoznačně definovány podle atributů a . 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, která je veřejně přístupná, je možné založit i další soukromá nebo firemní úložiště.