Myšlenka vytvořit sestavovací systém Ant vyznikla, když se tvořily první verze JSP kontejneru Tomcat. Tomcat sestává z mnoha modulů a jeho sestavování a připravování binárních distribucí bylo značně obtížné. Jamese D. Davidsona (původního autora Tomcatu) napadlo, že by tuhle mravenčí práci mohl dělat počítač. A tak se zrodil Ant – mravenec (zkratka z angl. another neat tool). Jak bývá u nadace při webovém serveru Apache zvykem, projekt se v polovině roku 2000 prostě rozdělil do dvou na sobě nezávislých projektů a díky tomu nám vývojáři přináší již pátou stabilní verzi první řady.
Ant je konfigurovatelný, flexibilní a plně přenositelný sestavovací systém napsaný v Javě. Jeho primárním cílem je kompilace a sestavování programů v Javě, ale existují určité nadstavby a speciální konfigurace umožńující kompilovat i jiné jazyky, které se zatím v oficiální ditribuci bohužel nenacházejí. Ve světě Javy tu byla před Antem černá díra. Sestavování každý řešil po svém. Někdo používal některý standardní make program, někdo měl vlastní a jiný používal sadu shellovských skriptů. Jakmile přišel Ant, komunita ho okamžitě přijala a téměr každý větší GNU projekt v Javě využívá jeho schopností. Ant přijalo mnoho integrovaných prostředí buď formou pluginů (JBuilder, jEdit, Netbeans/SunONE), či dokonce jako pevnou součást prostředí (Eclipse, IDEA).
Instalace Antu je snadná a přímočará. Jedná se o konzolovou aplikaci. Pro její nainstalování stačí zvolit správný instalační balík pro vaši distribuci a pak jej vyzkoušet příkazem ant. Můžete si také stáhnout aktuální binárku a nainstalovat ji do /usr/local. V tomto případě budete ještě muset nastavit proměnnou ANT_HOME na adresář, kde má spouštěcí skript Antu hledat své knihovny. Tím instalace končí. Můžete Ant také vyzkoušet tak, že si stáhnete některé z IDE, který má Ant přímo zabudovaný.
Podívejme se nyní, co všechno Ant nabízí. Ze všeho nejdůležitější je kompilace a sestavování projektů. Pro definici a nastavení musíme připravit soubor build.xml. Ant rozumí mnoha XML značkám, které jsou navíc všechny zcela intuitivní, což se o většině rozsáhlejších makefiles říci nedá. Začneme hlavní značkou project. V jednom sestavovacím souboru může tak být i více projektů. Hlavní páteří projektu jsou tak jako u standartního make targets, tedy cíle sestavování. Jednotlivé cíle můžeme vázat do závislostí a typická aplikace v Javě má většinou cíle jako prepare, compile, clean, dist, install a javadoc. Cíl dist (vytvoř distribuční soubory) může být tedy závislý na cílech clean, prepare, compile (příprava adresářů a kompilace) a javadoc (vytvoření dokumentace). Poté může být spuštěn vlastní cíl dist, který vytvoří binární či zdrojové balíčky (nebo obojí). V tomto směru se Ant nijak nevymyká svým proslavenějším bratrům.
Mezi veliké výhody patří podpora závislostí class souborů. Pokud změníte nějakou třídu, na které závisí deset dalších tříd, Ant to zjistí a požene i tyto třídy do kompilátoru. Dělá to tak, že se jednoduše podívá přímo do class souborů a vyhledá si tam všechny závislosti. Ant není závislý pouze na kompilátoru javac, umí volat jikes, rmic či JSP kompilátory Tomcatu nebo BEA Weblogic serveru. Že Ant zvládne vytváření adresářů, kopírování a přesouvání souborů a jiné operace, nikoho asi nepřekvapí. Při možnosti spouštět paralelní sestavovací procesy se však tají dech. Můžete kompilovat a zároveň vytvářet dokumentaci. Když jsem si pak nastavil Ant tak, že mi při kompilaci ukázal logo mojí firmy s pěkným progress barem a na konci mi zahrál fanfáru, byl jsem příjemně překvapen.
Další vlastností Antu je možnost flexibilně modifikovat CLASSPATH proměnnou. Díky tomu můžete zjišťovat, zda jsou dostupné všechny potřebné knihovny, automaticky je vyhledávat a stahovat (!) z internetu či upozorňovat uživatele. Je to veliká výhoda. Snad největším problémem při sestavování javovských programů je neustálá modifikace různých shellovských (nebo .bat) souborů a nastavování proměnných prostředí. S Antem toto odpadá. Každý projekt má své vlastní nastavení. Každý projekt si zkontroluje, zda je vše v pořádku. Filtrování je další příjemnou vlastností Antu, při které automaticky nahrazuje tzv. tokeny ( @version@
apod.) vlastními definicemi. Vytáření ZIP/JAR souborů je v Antu hračkou. Bez studování jediného přepínače balícího programu vytvoříte distribuční balík. Stačí k tomu jediná XML značka. Podpora formátů je skutečně široká: JAR/WAR/EAR, ZIP, TAR, GZIP a BZIP a s pomocí externích programů také RPM či CAB. Po zabalení stačí soubor distribuovat na server. Ať už se jedná o webovou aplikaci, či ne, Ant tohle zvládne. Umí dodávat vytvořené balíčky do JSP a EE kontejnerů přímo metodou HotSwap nebo pomocí FTP. Skutečnou lahůdkou je pak podpora telnet sessions. Můžete číst a zapisovat do otevřeného spojení a tím např. restartovat servery a podobně. Jistě, s GNU make by to také šlo, jenže těžko asi přenositelně. To byste raději ušetřili tu práci a restartovali server ručně.
Poslední dobou se začíná prosazovat tzv. Extreme Programing. Jde o to, že by programátor měl s novou aplikací zároveň psát testy. Tímto se zaobírají projekty JUnit a Cactus (taktéž ze stáje Apache – připravuji recenze). Ant je samozřejmě podporuje. Můžete tak vytvořít cíl test, který provede sadu testů a výsledky dá do XML souboru. Následně je můžete ihned převést například do HTML. Dobře to znají například programátoři v Perlu. Ant má v sobě zabudovanou také podporu JDepend, což je produkt, který umí projít váš kód a upozornit na případné chyby či doporučit řešení (říká se tomu code quality measuring). Pokud vám nebude stačit open sourcový JDepend, můžete využít i jiné produkty, za které však budete muset řádně zaplatit.
A to ještě nekončíme dámy a pánové! Je libo digitálně podepisovat vytvářené distribuční balíčky? Nebo máte chuť něco zapsat do SQL databáze přes JDBC? Ano? I na to má Ant XML značky. Snad vám ještě něco chybí? No tak si na to napište jedoduchý skript v jazyce BeanShell (interpretovaná Java v Javě, něco jako JavaScript).
Pokud máte zájem vytvořit veliký GNU projekt s podporou CVS, automatického generování čísel pro verzování, automatického sestavování a vytváření distribucí, automatického aktualizování knihoven a automatického generování dokumentace, testů a kontroly kódu, Ant je tu pro vás. Výsledky vám pošle poštou, uloží do databáze, na web, FTP a nebo vám je talkne přes telnet.