Hlavní navigace

Apache Ant 1.5

Lukáš Zapletal

Každý projekt sestávající z více souborů musí být sestaven ve správném pořadí, kompilátoru musejí být dodány správné cesty knihoven. Toto obstarává legendární make se svými bratry gmake, nmake, bmake apod. My se podíváme na jeden netradiční sestavovací systém, který ve světě sbírá jednu cenu za druhou.

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.

http://jakarta­.apache.org

Našli jste v článku chybu?

4. 1. 2003 11:55

Jan Koutnik (neregistrovaný)

Dobry den,
potreboval bych do javovskeho programu spousteneho antem presmerovat std. vstup. Uznavam, ze to neni metoda nezavisla na OS, ale anti task se mi psat veru nechce. Konkretne se to tyka programu JavaCUP. Btw. mate nekdo zkusenosti s Ant&JavaCUP ?

Nedari se mi antem spustit:

java javacup.Main






DigiZone.cz: R2B2 a Hybrid uzavřely partnerství

R2B2 a Hybrid uzavřely partnerství

Měšec.cz: Exekuční poradna: ptejte se online

Exekuční poradna: ptejte se online

Vitalia.cz: To nejhorší při horečce u dětí: Febrilní křeče

To nejhorší při horečce u dětí: Febrilní křeče

Měšec.cz: Za palivo zaplatíte mobilem (TEST)

Za palivo zaplatíte mobilem (TEST)

Vitalia.cz: 7 originálních adventních kalendářů pro mlsné

7 originálních adventních kalendářů pro mlsné

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

Podnikatel.cz: E-Ježíšek si zařádí: nákupy od 2 do 5 tisíc

E-Ježíšek si zařádí: nákupy od 2 do 5 tisíc

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

Lupa.cz: Obchod budoucnosti je bez front, košíků i pokladen

Obchod budoucnosti je bez front, košíků i pokladen

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby