Sunteți pe pagina 1din 4

Laborator 1: Eclipse & ANT ? Responsabil: Mihnea Muraru mmihnea@gmail.com ? Data publicarii: 13-02-2012 ?

Data ultimei modificari: 13-02-2012 Obiective Scopul acestui laborator este familiarizarea cu cateva instrumente care constitu ie mediul de lucru al laboratorelor de IDP si al temelor de casa: ? Eclipse ? Ant Eclipse JDK-ul se poate obtine de aici. Ca IDE vom folosi Eclipse. Ant Ant este un build tool pentru Java, proiectat, initial, ca un inlocuitor portabi l pentru make. In cadrul acestui laborator va veti familiariza cu modul in care se scrie un fisier build.xml (omologul makefile) simplu. Aveti la dispozitie man ualul Ant. Sectiunea Using Ant este utila. Pentru instalare, dezarhivati si realizati urmatoarele setari: ? variabila de mediu ANT_HOME trebuie sa indice directorul in care s-a facut deza rhivarea ? variabila de mediu PATH trebuie sa contina directorul bin al kit-ului. Exemplu: %ANT_HOME%\bin pe Windows, $ANT_HOME/bin pe Linux Avantajul Ant este independenta de sistemul de operare. Spre deosebire de un mak efile, in care se scriu comenzi specifice platformei respective, un fisier Ant e ste un document XML ce contine comenzi generice, nefiind necesara rescrierea lui la portarea pe alt sistem. Rularea se face executand ant in linia de comanda, i n acelasi mod in care se apeleaza make. Atentie! Aceasta va fi modalitatea de compilare si rulare a temelor de casa. Arh ivele temelor vor contine, obligatoriu, un fisier build.xml, si, de asemenea, o structura organizata de directoare. Iata un prim exemplu de fisier build.xml:

build.xml <?xml version="1.0"?> <project name="IDP1" basedir="." default="run"> <!-- Properties --> <property name="src.dir" value="src" /> <property name="build.dir" value="build" /> <!-- Targets --> <target name="compile"> <mkdir dir="${build.dir}" /> <javac srcdir="${src.dir}" destdir="${build.dir}" /> </target> <target name="run" depends="compile"> <java classname="Test" fork="true"> <classpath> <pathelement location="${build.dir}" /> </classpath> <arg value="ANT_RULZ" /> </java> </target> <target name="clean"> <delete dir="${build.dir}" /> </target> </project> Din sursa de mai sus se observa: ? elementul top-level al documentului este project ? elementul target permite definirea diferitelor activitati, in cazul nostru: com pilare, rulare, curatare: ? implicit, la un simplu apel ant, se executa target-ul specificat de atributul de fault al elementului project (in cazul nostru, run) ? daca se doreste executarea unui target anume, se va preciza in linia de comanda numele acestuia, de exemplu: ant clean ? se pot specifica dependente intre target-uri, folosind atributul depends: acest a precizeaza target-urile care trebuie rulate inaintea target-ului curent. In su rsa de mai sus, rularea depinde de compilare. Un target este executat cel mult o data, chiar daca apare in mai multe dependente ? target-urile sunt constituite dintr-o serie de task-uri, de exemplu task-ul jav a in cadrul target-ului run sau task-ul delete in cadrul target-ului clean ? elementul property permite definirea unei entitati referite frecvent in cadrul fisierului, in cazul nostru, numele unor directoare. Referirea unei proprietati se face prin secventa ${proprietate}

O facilitate importanta este posibilitatea de definire a cailor. Acest lucru est e util, de exemplu, cand programul refera fisiere jar. Acestea trebuie introduse in classpath atat la compilare, cat si la rulare. In urmatorul exemplu, presupu nem ca folosim fisierul lib.jar. Definim un element cale in felul urmator: <!-- Id-ul nu este obligatoriu "classpath", putand fi, de exemplu, "mypath" --> <path id="classpath"> <pathelement location="libs/lib.jar" /> </path> Acum, task-ul java poate fi scris in forma: <java classname="Test" fork="true"> <classpath> <path refid="classpath" /> <!-- am adaugat si fisierul jar la classpath --> <pathelement location="${build_dir}" /> </classpath> <arg value="ANT_RULZ" /> </java> Se observa cum am referit elementul path definit mai devreme, folosind atributul refid. Acum, classpath-ul include atat fisierul jar cat si directorul build. In cazul in care classpath-ul contine un singur element path, se poate inlocui e lementul classpath cu atributul classpathref. De exemplu, secventa: <javac srcdir="${src_dir}" destdir="${build_dir}"> <classpath> <path refid="classpath" /> </classpath> </javac> se poate restrange mai intai la: <javac srcdir="${src_dir}" destdir="${build_dir}"> <classpath refid="classpath" /> </javac> sau chiar la: <javac srcdir="${src_dir}" destdir="${build_dir}" classpathref="classpath" /> Utilizatorii isi pot defini propriile task-uri Ant, scriind cate o clasa pentru fiecare task, respectand o anumita structura. Exercitii Utilizati scheletul de laborator. 1. Cercetati scheletul laboratorului si creati un nou proiect Java. ? Pentru crearea unui nou proiect: File ? New ? Create Project, dupa care aveti 3 optiuni: ? fie setati ca si locatie a noului proiect folderul obtinut in urma dezarhivarii ? fie importati continutul directorului ?

fie copiati continutul directorului in directorul nou creat de Eclipse ? Directorul lib contine 2 subdirectoare: ? jars: contine 2 fisiere jar ? classes: contine 1 fisier class ? Rulati build.xml din interiorul Eclipse si observati outputul. ? fie folosind click dreapta pe fisier Run as? Ant Build ? fie folosind meniul Run?External tools 1. Decomentati, pe rand, cele 3 linii din main si realizati modificarile necesare pentru ca programul sa ruleze. ? Realizati, mai intai, configurarile necesare direct in Eclipse (ignorand moment an fisierul build.xml) ? Apoi, editati fisierul Ant: ? Definiti un element path, separat, ce va fi referit atat in target-ul de compil are, cat si in cel de rulare. ? Atentie! Secventa <pathelement location= ? directoare ce contin fisiere .class sau ? fisiere jar individuale. Nu poate fi folosita pentru a include toate fisierele jar dintr-un director. ? Incercati ambele variante: ? definiti cate un pathelement pentru fiecare jar in parte ? folositi fileset (manual Ant sau Google). /> poate fi folosita pentru a indica:

S-ar putea să vă placă și