Automatizált Java Build. ApacheAnt használatával



Hasonló dokumentumok
Hardver és szoftver követelmények

Viczián István IP Systems JUM XIX szeptember 18.

OPENCV TELEPÍTÉSE SZÁMÍTÓGÉPES LÁTÁS ÉS KÉPFELDOLGOZÁS. Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

Az állományok kezelésére használt fontosabb parancsok

Java-s Nyomtatványkitöltő Program Súgó

Programozási technológia 2.

A legfontosabb DOS parancsok

Java-s Nyomtatványkitöltő Program Súgó

Java I. A Java programozási nyelv

Apache, MySQL, PHP/Perl NetWare-n

Könyvtári címkéző munkahely

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

Programozási nyelvek JAVA EA+GY 1. gyakolat

Útmutató az OKM 2007 FIT-jelentés telepítéséhez

Kiszolgálók üzemeltetése. Iványi Péter

Mobil Informatikai Rendszerek

RapidMiner telepítés i. RapidMiner telepítés

Vectory telepítési útmutató

A Cobra Sprint telepítése CobraContoLight felhasználók számára

ÁNYK53. Az Általános nyomtatványkitöltő (ÁNYK), a személyi jövedelemadó (SZJA) bevallás és kitöltési útmutató együttes telepítése

Felhasználói leírás a DimNAV Server segédprogramhoz ( )

Image Processor BarCode Service. Felhasználói és üzemeltetői kézikönyv

Opensuse automatikus telepítése

C++ fejlesztés az ECLIPSE környezetben

Java-s Nyomtatványkitöltő Program Súgó

I. Bevezetés. 1. ábra A Java "logója"

AWK programozás, minták, vezérlési szerkezetek

Kézikönyv Nyomtatók kezelése Linuxon

Java-s Nyomtatványkitöltő Program Súgó

Oktatási cloud használata

Kormányzati Elektronikus Aláíró és Aláírás-ellenőrző Szoftver

Segédlet kriptográfiai szolgáltatást beállító szoftverhez (CSPChanger)

Web-programozó képzés szakdolgozat formai követelmények

A CCL program használatbavétele

Operációs Rendszerek. Windows Parancssor

Bevezetés a Python programozási nyelvbe

Importálás. más típusú (pl:.imp,.xml,.xkr,.xcz) állomány beimportálása a nyomtatványkitöltő programba

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Windows hálózati adminisztráció segédlet a gyakorlati órákhoz

BASH script programozás II. Vezérlési szerkezetek


1. Origin telepítése. A telepítő első képernyőjén kattintson a Next gombra:

AWK programozás Bevezetés

Adatintegritás ellenőrzés Felhasználói dokumentáció verzió 2.0 Budapest, 2008.

Szoftver technológia. Continuous integration & delivery. Cserép Máté ELTE Informatikai Kar 2019.

Szoftver technológia. Build systems. Cserép Máté ELTE Informatikai Kar 2019.

KnowledgeTree dokumentumkezelő rendszer

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

BaBér. Bérügyviteli rendszer. Telepítési segédlet 2014.

Java I. A Java programozási nyelv

Dropbox - online fájltárolás és megosztás

XCZ állományok ellenőrzése, átadása elektronikus beküldésre és közvetlen beküldése parancssori funkcióval az ÁNYK programban

Grid menedzsment megoldás az ARC köztesrétegben

Telepítési kézikönyv. EduSigner 1.0 digitális aláíró komponens

CISCO gyakorlati segédlet. Összeállította: Balogh Zoltán

Saját Subversion tároló üzemeltetése i. Saját Subversion tároló üzemeltetése

Miért jó ez: A Xampp csomag előnyös tulajdonságai: rendkívül jól felszerelt naprakész telepíteni-és frissíteni gyerekjáték.

Egyszerűbb a Google keresőbe beírni a Sharepoint Designer 2007 letöltés kulcsszavakat és az első találat erre a címre mutat.

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

Kézikönyv Mandant másolás HILFE menüben

A WORDPRESS TELEPÍTÉSÉNEK LÉPÉSEI

Linux alapok. Parancsok általános alakja parancs kapcsolók paraméterek

Cikktípusok készítése a Xarayában

WordPress segédlet. Bevezető. Letöltés. Telepítés

A NetBeans IDE Ubuntu Linux operációs rendszeren

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010.

O er e á r ci c ós ó s R en e d n sz s er e e r k e I. G akorlá l s

4. Laborgyakorlat. A fájlokról ezeket az adatokat, a fájlrendszer tárolja. Számunkra az 1, 3, 4. oszlopok lesznek az érdekesek.

chmod umask chown, chgrp

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

PDF. Tartalomjegyzék 1/21

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

Youtube videó letöltés és konvertálás Linuxon

Virtual Call Center kliens program MSI csomag telepítése

BaBér bérügyviteli rendszer telepítési segédlete év

DOAS Mentés Másolása Helyi Terminálra

Infocentrum Számlázó hálózatos verzió + Firebird Adatbázismotor

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer

SZÁMÍTÁSOK A TÁBLÁZATBAN

Apache OpenOffice telepítési útmutató

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Alkalmazások fejlesztése A D O K U M E N T Á C I Ó F E L É P Í T É S E

Javac és Eclipse útmutató

Operációs rendszerek. 2. gyakorlat. Munka állományokkal UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Szathmáry László Debreceni Egyetem Informatikai Kar

OOP #14 (referencia-elv)

GeoServer, OpenLayers és WFS. Dolleschall János

Programozási technológia I.

AWK programozás, minták, vezérlési szerkezetek

Segédlet kriptográfiai szolgáltatást beállító szoftverhez (CSPChanger)

BIG DATA ÉS GÉPI TANULÁS KÖRNYEZET AZ MTA CLOUD-ON KACSUK PÉTER, NAGY ENIKŐ, PINTYE ISTVÁN, HAJNAL ÁKOS, LOVAS RÓBERT

ArchiPHYSIK 8.0 telepítési útmutató

2 műszeres változat, WEST4170+ hőmérsékletszabályozó műszerrel, Modbus TCP kommunikációval. 3. rész

Aromo Szöveges Értékelés

Operációs rendszerek I. IIII. gyakorlat

Operációs rendszerek. 3. gyakorlat. Jogosultságkezelés, linkelés, csővezeték UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

OpenOffice.org irodai programcsomag

Hálózati operációs rendszerek II. OES biztonsági rendszere

Tartalom jegyzék 1 BEVEZETŐ SZOFTVER ÉS HARDVER KÖVETELMÉNYEK 2 2 TELEPÍTÉS 2 3 KEZELÉS 5

Tortoise SVN használata. Képes útmutató

Átírás:

Automatizált Java Build ApacheAnt használatával

1 TARTALOMJEGYZÉK 1 Tartalomjegyzék... 2 2 Bevezetés... 3 3 Az Apache Ant... 3 4 Felhasználás... 5 5 Összefoglalás... 9 6 Irodalomjegyzék... 9 30_Automatizalt java build anttal 2/9

2 BEVEZETÉS Az automatizált buildelés a szoftverfejlesztés egyik legfontosabb folyamata, mely biztosítja, hogy az alkalmazás építése minden egyes alkalommal ugyanazokkal a lépésekkel, beállításokkal, paraméterekkel végrehajtható legyen. Ahogy ezek a folyamatok egyre összetettebbé válnak, úgy válik egyre fontosabb szemponttá, hogy legyen egy általános eljárás, mely nagyban megkönnyíti a fejlesztők munkáját. Az erre a célra kifejlesztett eszközök segítségével lehetőség nyílik a folyamat teljes, többek között a fordítást, a tesztelést, és publikálást is magában foglaló lépéssorozat meghatározására. Az automatizált buildelés előnyei közé tartozik, hogy segítségével könnyebben összehangolhatóak a teszt, az integrációs és az éles környezetek, illetve egyszerűbb átjárhatóságot biztosít a különböző szoftverkörnyezetek, platformok között. 3 AZ APACHEANT Az ApacheAnt egy ilyen eszköz, mely Java nyelven íródott és elsősorban Java projektek automatikus buildelésére használatos. A nyílt forráskódú alkalmazást James Duncan Davidson kezdte fejleszteni, egy zárt forráskódú Sun termék mintájára. Az Ant eredeti célja az volt, hogy a Sun JSP/Servlet motorjához, - mely később ApacheTomcat néven vált ismerté -, legyen egy egyszerűen kezelhető,platform függetlenbuild eszköz. A program mára Java fejlesztéseknél a legelterjedtebb ilyen eszközzé vált. A program célja a C/C++ világában jártás fejlesztőknek ismerős lehet, hasonló funkciókkal rendelkezik, mint az ismert Make eszköz. A Make eszköz azonban erősen épül az azt futtató környezetre, így nem valósul meg a korábban már említett, és az egyik legfontosabb szempontnak számító platformfüggetlenség. Egy példa Windows környezetben: # rmdir /S /Q Konyvtar Ugyan az a feladat Unix környezetben: # rm-rfkonyvtar Az Ant ezt a problémát nagyszámú beépített funkcióval, illetve XML alapú konfigurációs lehetőséggel oldotta meg. Az XML szabványnak köszönhetően a folyamat lépéseit egy elterjedt, 30_Automatizalt java build anttal 3/9

mind az ember, mind pedig a gép számára könnyedén értelmezhető módon van lehetőség lépésről lépésre leírni. A feladat AntplatformfüggetlenAnt konfigurációban: # <deletedir= Konyvtar /> Természetesen igény esetén az alkalmazás lehetőséget biztosít arra is, hogy a futtató rendszer parancsait hívjuk meg. Az Ant konfigurálhatóságának szabadságára jellemző, hogy míg a Unix / jelet használja a könyvtárak útvonal elemeinek elválasztására, Windows környezet pedig a \ jelet használja, addig az Antban bármelyik megoldás tetszőlegesen használható. Néhány példa Antban használható parancsokra: Parancs Copydir Copyfile CVS Delete Deltree Get Jar Javac mkdir Tstamp zip scp Leírás Teljes könyvtár másolása Állomány másolása CVS verziókövető rendszer kezelő Egy állomány törlése Könyvtár és alkönyvtárainak törlése Állomány letöltése egy adott webcímről Jar állomány készítése Java forráskód fordítása Könyvtár létrehozás Aktuális idő, dátum lekérdezése Állományok tömörítése SSH fájlmásolás Az Ant használatához három dologra van szükség: Telepített Java Development Kit, szerkesztő a konfigurációs XML állományhoz, illetve magára az Ant csomagra. Az Ant alapértelmezett konfigurációs állománya a build.xml. Az Ant működését és használatát a következő példán keresztül mutatom be. használatához alapszintű XML tudás szükséges. Az Ant 30_Automatizalt java build anttal 4/9

4 FELHASZNÁLÁS Az ApacheAnt működését és gyakorlati felhasználását egy konkrét, működő példa build.xml konfigurációs állományon keresztül mutatom be. <project name="antforditominta" basedir="." default= ellenoriz > <description> Ant minta build.xml </description> <!-- Tulajdonsagokbeallitasa--> <propertyname="src" location="src"/> <propertyname="build" location="build"/> <propertyname="classes" location="classes"/> <propertyenviroment="env"/> <targetname="ellenoriz"> <description> Kornyezetivaltozokellenorzese </description> <echomessage="beallitottkornyezetivaltozok:"/> <echomessage="java_home: ${env.java_home}"/> <echomessage="ant_home: ${env.ant_home}"/> </target> <targetname="keszit" depends="ellenoriz" description="konyvtarstrukturaelkeszitese"> <mkdirdir="${build}"/> <mkdirdir="${classes}"/> </target> <targetname="fordit" depends="keszit" description="java forraskodforditasa"> <javacsrcdir="${src}" destdir="${classes}"/> </target> <targetname="jar" depends="fordit" description="jarallomanykeszitese"> <jardestfile="${build}/pelda.jar"> <filesetdir="${classes}" includes="**/*.class"/> <manifest> <attributename="main-class" value="peldaprogram"/> </manifest> </jar> </target> </project> 30_Automatizalt java build anttal 5/9

A legnagyobb egysége maga a projekt (Project), melyet minden állománynak tartalmaznia kell. Az első sorban látható project definiálásnak három attribútuma lehet: name: A projekt nevét lehet definiálni, nem kötelező paraméter default: A projekten belüli alapértelmezett cél (Target) adható meg. basedir: A munkakönyvtár megadására van lehetőség A példában jelölt AntForditoMinta project munkakönyvtára az a könyvtár, ahol maga a build.xml található és alapértelmezetten az ellenoriz célt futtatja. A célok (target) a fájl azon elemi, melyek pontos akciókat írnak le, vagyis megmondják hogy az adott feladat elvégzéséhez pontosan milyen lépéseken keresztül vezet az út. Egy targetmegadásánál öt paramétert definiálhatunk. name: A cél nevét adja meg, kötelező paraméter. depends: Függőségeket, sorrendet van lehetőség megadni vele különböző célok között. A példában látható, hogy a keszit cél függ az ellenoriz céltól, vagyis a keszittargetben megadott parancsok csak akkor futnak, ha az ellenoriztargetben megadottak sikeresen lefutottak. Jelen példában az ellenoriztarget a JAVA_HOME (a telepített JDK helyére mutat) illetve az ANT_HOME (az Ant telepítés helyére mutat) környezeti változó értékét írja ki a képernyőre. E két környezeti változónak az Ant helyes működéséhez definiálva kell lennie. if: Feltételes futás beállítását teszi lehetővé, azaz egy adott cél csak akkor fut le, ha egy adott tulajdonság (property) be van állítva. unless: Az if paraméter ellenkezője description: A target leírását tartalmazza. Ahogyan a példában is látható, a <description> paraméterrel bármikor fűzhetünk leírást az állományunkhoz. Az első target megadása előtt látható, hogy <property> tulajdonságokat adtunk meg: <propertyname="src" location="src"/> A <property> segítségével a név (name) paraméterrel hivatkozhatunk megadott értékre (value) vagy helyre (location) a továbbiakban, így például egy könyvtár fizikai elérési útja helyett használhatunk szimbolikus neveket is. A hivatkozás a ${nev} módon történik. Mivel az Ant parancssori eszköz, így lehetőségünk van arra, hogy a project állomány egy adott target lépését futtassuk. 30_Automatizalt java build anttal 6/9

# ant buildfileteszt.xmleztaceltfuttatsd A fenti parancs módosítja az alapértelmezett build.xml állományt és helyette a program a teszt.xml fájlt használja, illetve az állományon belül csak az EztACeltFuttasd célt futtatja. A targetek a meghatározott célt a feladatok (task) elvégzésével hajtják végre. Az Ant ereje a feladatok szabadságában rejlik. A program számos beépített feladattal rendelkezik,- ahogy arra már korábbi példa táblázatban utaltam -, illetve magunk is definiálhatunk saját feladatokat. Rendelkezésünkre állnak többek között állománykezelő, tömörítő, fordító, tesztelő, hálózatkezelő beépített feladatok. Példánkban a KESZITtarget két <mkdir> feladattal rendelkezik, melyek létrehozzák a fordításhoz szükséges könyvtárstruktúrát. A létrehozni kívánt könyvtárak nevei <property> tulajdonságként vannak megadva, így ha a későbbiekben szükséges ezeket módosítani, akkor elég csak tulajdonság megadásánál megtenni azt. Ilyen név-érték tulajdonság párokat a könnyebb áttekinthetőség érdekében van lehetőség külső állományban definiálni. <propertyfilename="tulajdonsagok.txt" comment="definialttulajdonsagok"/> A KESZIT target lefutása után tehát létrejön egy BUILD illetve egy CLASSES mappa. A függőségi viszonyok mitt a következő lépés a FORDIT cél. A célban egyetlen task, a <javac> található. A parancs rekurzívan bejárja az <src> paraméterben megadott könyvtárat, ahol példánkban a.java kiterjesztésű forráskód állományok találhatóak, és elvégzi a fordítást. A lefordított.class állományokat a <destdir> paraméterben megadott célkönyvtárba helyezi. A példában <javac> legegyszerűbb használati módja látható, de a parancs széleskörű paraméterezési lehetőséggel rendelkezik, mellyel az alapértelmezett fordítás beállításit tudjuk módosítani. Miután a fordítás megtörtént az Ant a konfigurációnak megfelelően a JAR céllal folytatja a műveletet. A <jar> feladat a megadott paraméterek alapján elkészíti a.jar állományt. A fordításhoz hasonlóan ebben a feladatban is két paramétert kötelező megadnunk: a forrást és a célt. A cél megadása egyértelműen történik, a készítendő állomány nevét definiáljuk. A forrás megadásánal az Ant egy újabb lehetőségét használjuk ki. A <fileset> segítségével meghatározhatjuk, hogy 30_Automatizalt java build anttal 7/9

egyes könyvtárokon belül mely állományra legyen értelmezve a feladat. A <include> paraméter segítségével bővíthetjük, az <exclude> paraméterrel pedig redukálhatjuk az állományok listáját. Ezzel a lehetőséggel természetesen bármelyik task esetén élhetünk, ahol valamilyen módon állományokkal vagy könyvtárakkal végzünk műveleteket. A példában a forras_konyvtar tartalmát,- a java kiterjesztésű állományok kivételével-, másoljuk a /cel/konyvtar könyvtárba <copytodir="../cel/konyvtar"> <filesetdir="forras_konyvtar"> <excludename="**/*.java"/> </fileset> </copy> A jar állomány elkészítése után a target még a <manifest> feladat segítségével elkészíti az alkalmaztas meta-adatait tartalmazó manifest állományt a megadott paraméterek alapján. Ezzel az Ant végzett az előre definiált feladataival: 1, A környezeti változók beállításainak ellenőrzése 2, Class könyvtár elkészítése a lefordított állományoknak, illetve a Build könyvtár a kész jar alkalmzásnak. 3, A forráskönyvtárban lévő.java kiterjesztésű állományokat lefordítása, a kész.class állományok elhelyezése a Class könyvtárban 4, A lefordított.class állományokból a Build könyvtárba elkészíti a jar alkalmazást és a manifest állományt. A kész állománnyal számos dolgot elvégezhetünk még, legyen szó akár dokumentelásról vagy akár hálózati kitelepítésről. 30_Automatizalt java build anttal 8/9

5 ÖSSZEFOGLALÁS A szoftver build folyamat automatizálása egy nagyon hatásos módszer, mellyel könnyedén növelhető a fejlesztési folyamat hatékonysága. Ezt a célt természetesen bármilyen más hasonló programmal, vagy akár saját fejlesztésű parancsállományokkal is el lehet érni. Aki azonban úgy dönt, hogy az Apache Ant alkalmazást választja, az egy egyszerűen használható, platformfüggetlen megoldást kap. Az XML technológiának köszönhetően a konfigurálás könnyedén elsajátítható, a már meglévő beállítások könnyedén értelmezhetőek. Az alkalmazás számos beépített parancsot tartalmaz munkánk megkönnyítésére, akinek pedig ez nem lenne elég, akár saját parancsokat is definiálhat. Az Apache Ant ezen tulajdonságai miatt számít jelenkorunk operációsrendszer-független fejlesztéseinek egyik alapjának. Az esettanulmány elkészítéséhez munkájával hozzájárult Kisfalussy Tamás a Neuron Szoftver Kft. alkalmazottja. 6 IRODALOMJEGYZÉK ApacheAnt dokumentáció: http://ant.apache.org/manual/index.html http://hu.wikipedia.org/wiki/apache_ant http://ant-contrib.sourceforge.net/ XML specifikáció: http://www.w3.org/tr/rec-xml/ 30_Automatizalt java build anttal 9/9