A Java alkalmazásainkat az Apache Ant build eszközzel fogjuk elkészíteni.

Ant

Miért van szükség egy build eszközre? Miért nem elég fordítjuk a programot és futtatjuk? Egy build tool, amilyen az ant is, többet tud nyújtani, mint csupán a fordítás. Ha szükségünk van egy vagy több elemre az alábbi listából, akkor érdemes valamilyen build eszközt használni.
  • kód fordítása
  • csomagkészítés (pl jar)
  • a futtatható programok elhelyezése teszt szerverre
  • változások tesztelése (regressziós tesztelés)
  • kódot átmásolni valahová
Ezek alapján már látható, hogy a buildelés folyamata bővebb, mint maga a fordítás. Több feladatot is magában foglal.

Telepítés

  • Java és Ant letöltése
  • Java telepítés után állítsuk be a JAVA_HOME környezeti változót!
  • Az Ant binárisok kicsomagolása után állítsuk be az ANT_HOME környezeti változót!
  • A JAVA_HOME és ANT_HOME környezeti változókat adjuk hozzá a PATH környezeti változóhoz!
  • Teszteljük az ant -version paranccsal, hogy megfelelően működik-e az ant.

Build fájlok

Az ant xml alapú build fájlt/okat használ, melynek neve (ez nem kötelező, de ajánlott) build.xml. Egy egyszerű build.xml a következőképpen néz ki.
                <?xml version="1.0"?>
                   <project name="Hello World Project" default="info">

                   <target name="info">
                      <echo>Hello World - Welcome to Apache Ant!</echo>
                   </target>

                </project>
            
A build.xml-t mindig a projekt mappa gyökerébe rakjuk.

A project elem

Attribútum Leírás
name A projekt neve. Opcionális
default Az alapértelmezett target megadására szolgál. Kötelező. (Targeteket lásd alább)
basedir A kiindulási könyvtár, a projekt gyökérkönyvtára. Opcionális.

A target elem

A target elemben adhatunk meg összetartozó feladatokat, melyeket egyben kell végrehajtani. A target-ek között függőségeket is adhatunk meg (depends attr.). Például a deploy target függ a package targettől, ami függ a compile targettől (Sorrendiség biztosítható).
Attribútum Leírás
name A target neve. Kötelező
depends Megadhatóak a targetek nevei, amitől ez a target függ (több függőség esetén vessző az elválasztó). Opcionális
description A target rövid leírása. Opcionális.
if A target-et csak akkor engedi végrehajtani, ha a feltétel igaz. Opcionális.

A fenti példa futtatása

Nyissunk command prompt-ot ott, ahol a build.xml található és adjuk ki az ant parancsot. Mivel a fenti példában a default az info target ezért argumentum nélkül ez a target hajtódik végre. Az ant parancsnál megadhatjuk, hogy melyik target-et szeretnénk végrehajtani. Pl.: ant info

Property

A változókat váltja ki. Példa:
                <property name="build" value="build"/>

                <target name="init" description="Projekt inicializálás">
                  <mkdir dir="${build}"/>
                </target>
            
Az init target létrehozza a build mappát (mkdir), melyet a property-ben állíthatunk be. A változók hivatkozása a ${változó} megadással lehetséges. Az ant rendelkezik előre definiált property halmazzal is.
Property Leírás
ant.file A build fájl helye.
ant.version Az ant verzióját adja meg
basedir A projekt gyökérkönyvtára, megegyezik azzal, amit a project elemben megadtunk.
ant.project.name A projekt neve. Megegyezik azzal, amit a project name attribútumában megadtunk.
ant.project.default-target Az alapértelmezett target-et adja meg
A property-ket nagyobb project esetén mindig rakjuk ki egy külön *.properties fájlba, mert így a build.xml-t nem kell majd módosítani elég a .properties fájlt lecserélni az adott környezetnek megfelelően.
                <property file="build.properties"/>

                <target name="init" description="Projekt inicializálás">
                  <mkdir dir="${build}"/>
                </target>
            
A properties fájlban kulcs érték felsorolások találhatóak: kulcs=érték formában. Kommentet a # használatával készíthetünk. A fenti példához tartozó build.properties fájl:
                #A build mappa neve
                build=build
            

Fileset

Fájlokat foghatunk össze egy halmazba. Bizonyos mintának megfelelő elemeket bevehetünk illetve kizárhatunk a fileset-ből. Példa:
                <fileset dir="${src}" casesensitive="yes">
                   <include name="**/*.java"/>
                   <exclude name="**/*Stub*"/>
                </fileset>
            
Az összes java kiterjesztésű fájl bevétele, de a Stub.ot tartalmazó elemek kizárása.

Taskok

  • könyvtár létrehozása:
                            <mkdir dir="${build}"/>
                        
  • fordítás:
                            <javac srcdir="${src}" destdir="${build}"/>
                        
    Az srcdir-ben lévő elemeket fordítja le, és a .class fájlokat a destdir-be rakja.
  • fájlok másolása:
                            <copy todir="${dist}">
                               <fileset dir="${script}"/>
                            </copy>
                        
    A todir-be másolja a copy-n belül megadott fájlokat (most a script-ben található feájlokat).
  • jar fájl készítése
                            <jar jarfile="${dist}/projekt.jar" basedir="${build}" manifest="${etc}/Manifest"/>
                        
    jarfile <- megadja, hogy hova rakjuk az elékszült jar fájlt.
    basedir <- innen veszi a .class fájlokat
    manifest <- ebben az állományban adjuk meg a main-t tartalmazó osztályt