Hlavní navigace

Používáme Javu na Linuxu, kompilujeme s Mravencem

binary runner

Programujete-li v Javě, jistě vám přijde vhod javovská obdoba UNIXové utility make, prostě další pěkný nástroj (Another Neat Tool) Ant.

Ant vs. make

Logo Ant Pro překlad C programů na UNIXu vznikl program make. Jeho vznik se datuje snad někam do sedmdesátých letech a je to na něm také vidět — syntax odpudivá, vzpomeňme zvláště oblíbené odsazování příkazů tabelátory. Stejně tak rozšiřitelnost pomocí volání externích programů je v heterogenním prostředí přístup obtížně využitelný.

Proto pod křídly Apache Software Foundation vznikl Ant. Jde o aplikaci sloužící k sestavování velkých softwarových projektů, tak ostatně Ant i vznikl – při vývoji JSP kontejneru Jakarta Tomcat. O jeho kvalitách svědčí, kromě množství softwaru (za všechny jmenujme javadoc či eclipse), který s ním umí spolupracovat, i mnohá ocenění. Od Software Development Magazine dostal Ant Productivity Award 2002, JavaWorld ho zase ocenil jako Most Useful Java Community-Developed Technology.

Instalace a nastavení prostředí

Ant si můžeme stáhnout z jeho domovské stránky na apache.org. Distribuční balík si stáhneme ve formátu vhodném pro cílovou platformu a rozbalíme ho třeba do /usr/java/ant (i když podle LSB by bylo možná správnější /opt/ant). Pro používání Antu to ale nestačí, musíme ještě nastavit proměnné prostředí. U bashe toho dosáhneme vložením následujících řádků do .bash_profile nebo systémového /etc/profile:
export ANT_HOME=/usr/java/ant
export PATH=${PATH}:${ANT_HOME}/bin

Výše zmíněné nastavení by mělo zaručit, že Ant bude fungovat správně. Pokud narazíte na problémy, rozhodně zkuste nejnovější verzi, možná jste narazili na chybu, která je v ní už odstraněná. Verze 1.5 navíc přináší, kromě podpory assertions JDK 1.4, velmi užitečný příkaz -diagnostics, jehož výstup je při hledání zdroje potíží doslova neocenitelný. Další přepínače, které se vyplatí si pamatovat, jsou -debug a -verbose

Z možných problémů bych si dovolil vybrat jeden poměrně častý s hůře odhalitelným zdrojem. Projevuje se poněkud zavádějícím chybovým hlášením Cannot use modern/classic compiler. To ovšem může být způsobeno několika různými příčinami — nenastavením proměnných JAVA_HOME nebo ANT_HOME, tím, že Ant nemůže najít rt.jar nebo tools.jar, nebo naopak výskytem ant.jar v $JAVA_HOME/jre/lib/ext.

Project, target, task

Ant zpracovává konfigurační soubory s XML syntaxí. Každý soubor, defaultně pojmenovaný build.xml, obsahuje jeden projekt a nejméně jeden cíl (target). Každý se skládá, kromě jiného, z několika úkolů (tasks). Pro každý task existuje třída, která ho zpracovává. Z toho je patrný styl rozšiřování — přidá se task a nasměruje se na třídu, která ho zpracovává. Těchto rozšíření je k dispozici velké množství a umožňují i kompilaci jiných jazyků, než je Java.

Ke zpracování některých tasků je potřeba mít nainstalovány konkrétní softwarové balíky. Javové archivy (*.jar) v nich obsažené se umísťují do $ANT_HOME/lib. Z těch nejzajímavějších jmenujme alespoň:

  • junit — spouštění unit testů (task junit)
  • xalan — XSLT processor (junitreport a další)
  • jdepend — závislosti (jdepend)
  • net components— ftp, telnet

Jedním z naprosto základních tasků je javac, umožňující nastavit podmínky překladu, mimo jiné zvolit kompilátor, který má být použit. Toho lze dosáhnout dvěma způsoby — buď nastavením atributu compiler, nebo, což ovlivní všechny výskyty javac, nastavením build.compiler: <property name="build.compiler" value="???"/>. Za ??? v našem případě dosadíme jednu z hodnot:

  • classic — kompilátor v JDK 1.2 a předcházejících
  • modern — kompilátor v JDK 1.3 a vyšších
  • jikes — open source IBM kompilátor Jikes
  • kjc — kompilátor kopi z Kaffe
  • gcj — kompilátor GCJ z projektu GCC

Budoucnost Antu, to je Myrmidon

Ano, Ant je dokonalý. Jeho tvůrci se však rozhodli přetvořit ho na ještě dokonalejší. Ant 2 vzniká pod kódovým jménem Myrmidon. Nová generace Ant by měla přinést srozumitelnější strukturu build.xml, jednoduché nasazení a správu tasků třetích stran, zjednodušení procesu vývoje tasků, umožnění tvorby ad-hoc tasků uvnitř build.xml v nějakém skriptovacím jazyce (nejpravděpodobněji javascript) a integraci template technologií jako XSLT pro tvorbu znovupoužitelných komponent (komponentový build file). Je tedy na co se těšit.

---
příště: tomcat

Našli jste v článku chybu?