Apache Ant

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Apache Ant (anglická výslovnost [əˈpæči ænt]) je nástroj pro sestavování softwarových aplikací. Umožňuje automatizovat řadu činností od kompilace, testování, až po vytvoření balíku pro distribuci. Princip Antu je shodný s unixovým nástrojem Make, avšak na rozdíl od něho se skripty píší v jazyce XML. Nástroj samotný je napsaný kompletně v jazyce Java. Z toho vyplývá jeho největší výhoda - platformní nezávislost.

Ant je podporovaný řadou vývojových prostředí. Z nejznámějších lze jmenovat Eclipse a IntelliJ IDEA. +more NetBeans jej používá dokonce jako výchozí nástroj pro sestavování projektů.

Ant je open source projektem organizace Apache Software Foundation. Podmínky jeho použití upravuje licence Apache License 2.0.

Alternativu tvoří již zmíněný Make. Jeho nevýhodou oproti Antu je, že používá příkazy a programy hostitelského systému. +more Proto je přenositelnost jeho konfigurace mezi platformami velmi nízká. Druhou alternativou je komplexněji pojatý nástroj pro řízení celého životního cyklu programu - Apache Maven. Oproti Antu má řadu funkcí navíc, nicméně na některé specifické projekty ani to nemusí stačit. V takovém případě může být výhodnější použít Ant právě pro jeho snadnou rozšiřitelnost.

Historie

Autorem Antu je James Duncan Davidson. Vytvořil jej pro sestavování servletového kontejneru Apache Tomcat nezávisle na cílové platformě. +more První samostatná verze 1. 1 byla uvolněna v červenci roku 2000.

Postupem času se Ant rozšířil do řady dalších open source projektů a dnes je prakticky jedním ze standardů pro sestavování aplikací psaných v jazyce Java. Velká popularita Antu vedla i ke vzniku verzí pro platformu +moreNET'>. NET a jazyk PHP.

Použití

K popsání sestavovacího procesu Antu pro zvolený projekt je třeba vytvořit konfigurační soubor ve formátu XML, zpravidla nese název build. xml. +more Velké projekty se často skládají z dalších podprojektů a proto Ant umožňuje definovat závislosti na dílčích konfiguračních souborech. Nejprve jsou v definované hierarchii sestaveny všechny podprojekty a až poté hlavní projekt. Sestavení se provede po zavolání následujícího příkazu v adresáři projektu.

$ ant [cíl]

Předpokladem je správné nastavení proměnných prostředí PATH i JAVA_HOME dle dokumentace a přítomnost konfiguračního souboru build. xml v tomto adresáři. +more Není-li zadán parametr cíl, použije se výchozí. Následuje příklad souboru build. xml:.

Cíle

V konfiguračním souboru build. xml jsou pomocí tagu target definovány cíle, kterých má být v rámci procesu sestavení dosaženo. +more Každý cíl má svůj název a kromě toho může mít definován v atributu depends také seznam závislostí na dalších cílech, které musí být vykonány před ním. V kořenovém tagu project se v atributu default udává výchozí cíl, jenž bude zpracován v případě, že Antu explicitně neurčíme jiný.

Na příkladu uvedeném výše jsou definovány cíle init, compile, archive a clean. Jako výchozí je určen cíl archive a proto bude vykonán, neurčíme-li Antu jinak. +more Z definovaných závislostí vyplývá, že před ním musí proběhnout cíl compile. Kompilace se ale nemůže spustit, dokud není vykonán cíl init. Proto bude sestavování ukázkového projektu probíhat přesně v opačném pořadí. Nejprve se vykoná cíl init, následně compile a nakonec archive.

Ant dokáže samostatně zpracovat libovolný z definovaných cílů, ale vždy předtím zpracuje i jeho závislosti. Zavoláme-li ho s parametrem compile, zpracuje nejprve závislost init a poté zkompiluje třídy ukázkového projektu. +more Dalšími cíli se již zabývat nebude.

Konstanty

Pomocí tagu property lze nastavit konstanty a tím usnadnit parametrizaci nebo potenciální úpravy souboru konfigurace v build. xml. +more Takto je možné načítat i proměnné prostředí či externí soubory s definicí konstant. Vždy se jedná o konstanty v pravém slova smyslu. Jakmile se jednou nastaví, další pokusy změnu hodnoty jsou ignorovány. Této vlastnosti lze využít a nastavit některé konstanty pomocí parametrů při spouštění Antu - jejich další přenastavení v build. xml bude ignorováno.

Pomocí definovaných konstant je možné také podmínit vykonání některého cíle. Do tagu target se přidá atribut if a nebo unless s hodnotou odpovídající jménu konstanty. +more Takový cíl je poté vykonán pouze, pokud je a nebo není daná konstanta definovaná.

Úkoly

V rámci jednotlivých cílů je možné používat řadu úkolů, v terminologii Antu označených výrazem task. Úkoly jsou zodpovědné za vykonávání specifických činností sestavovacího procesu. +more Jsou vykonávány postupně podle jejich pořadí v rámci cíle. Je možné se setkat se třemi typy úkolů.

Prvním z nich jsou úkoly vestavěné v Antu. Je jich celá řada a pokrývají všechny běžné funkce od vytvoření nebo smazání adresáře, kompilace, generování dokumentace, vytváření jar archivu, vytváření nebo validaci XML dokumentů, spouštění unit testů, spouštění programu, práce s FTP serverem, odesílání emailu, a tak dále.

Další skupinu tvoří úkoly třetích stran. Množství doplňujících úkolů do Antu vytvořili jeho uživatelé a dali veřejně k dispozici ostatním.

Pokud není požadovaná funkcionalita k dispozici ani v jedné z předchozích skupin, lze si naprogramovat úkoly vlastní, jelikož Ant obsahuje otevřené a dokumentované API. Stačí vytvořit potomka třídy org. +moreapache. tools. ant. Task, překrýt jeho metodu execute a pro všechny atributy definovat set metody. Níže uvedený příklad ukazuje, jak lze vytvořit jednoduchý úkol. Jedinou jeho funkcí je vypsání zadaného parametru message. Funguje obdobně jako vestavěný úkol echo.

package org.sampleproject;

import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task;

public class SampleTask extends Task {

private String message;

public void setMessage(String message) { this.message = message; }

@Override public void execute throws BuildException { super.execute; log(message); } }

V konfiguračním souboru build.xml je ještě nutné úkol definovat pomocí tagu taskdef. Následně již nic nebrání jeho používání.

Omezení

Apache Ant má řadu využití. Je vhodné použít ho všude tam, kde projekt přerostl jednoho vývojáře a jeho sestavení včetně testování vyžaduje komplexní přístup. +more Nicméně i přes zřejmé výhody se k některým věcem úplně nehodí. Jeho ovládání přes příkazovou řádku a chybové hlášky ho předurčují k používání programátorům. Není vhodné nutit koncové uživatele spouštět nebo sestavovat projekty pomocí Antu. Pokud se vyskytne problém, sestavování projektu je zastaveno a Ant vypíše chybovou hlášku. Ta bude srozumitelná pouze programátorovi.

Ant také není vhodný pro začátečníky. Vytvoření konfiguračního souboru build. +morexml může být poměrně pracné a pokud je cílem pouze zkompilovat pár řádků kódu nebo spustit testy, bohatě postačí IDE.

Literatura

Externí odkazy

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top