Apache Ant
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. 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.[1] Alternativu tvoří již zmíněný Make. Jeho nevýhodou oproti Antu je, že používá příkazy a programy hostitelského systému. 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. HistorieAutorem Antu je James Duncan Davidson. Vytvořil jej pro sestavování servletového kontejneru Apache Tomcat nezávisle na cílové platformě. První samostatná verze 1.1 byla uvolněna v červenci roku 2000.[2] 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 .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 $ ant [cíl]
Předpokladem je správné nastavení proměnných prostředí <?xml version="1.0" encoding="UTF-8"?>
<project name="sampleproject" default="archive">
<property name="version" value="1.0" />
<target name="init">
<mkdir dir="src/META-INF" />
<mkdir dir="build/classes" />
<mkdir dir="dist/${version}" />
</target>
<target name="compile" depends="init">
<javac srcdir="src" destdir="build/classes"
includeantruntime="false"/>
</target>
<target name="archive" depends="compile">
<manifest file="build/manifest.mf">
<attribute name="Main-Class"
value="org.antbook.welcome.Main"/>
</manifest>
<jar destfile="dist/${version}/project.jar" basedir="build/classes"
manifest="build/manifest.mf"/>
</target>
<target name="clean" depends="init">
<delete dir="build"/>
<delete dir="dist/${version}"/>
</target>
</project>
CíleV konfiguračním souboru 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. 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. Dalšími cíli se již zabývat nebude. KonstantyPomocí tagu Pomocí definovaných konstant je možné také podmínit vykonání některého cíle. Do tagu ÚkolyV rámci jednotlivých cílů je možné používat řadu úkolů, v terminologii Antu označených výrazem 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.[4] 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 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 <taskdef name="sampletask" classname="org.sampleproject.SampleTask"
classpath="build/classes" />
<sampletask message="Hello, World!"/>
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. 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 LiteraturaLOUGHRAN, Steve; HATCHER, Erik. Ant in Action. 2. vyd. [s.l.]: Manning, 2007. Dostupné online. ISBN 1-932394-80-X. (anglicky) Externí odkazy
Reference
|