Το Apache Ant είναι ένα εργαλείο δημιουργίας διεργασιών αλληλεξαρτούμενων μεταξύ τους με στόχο την μεταγλώττιση σύνθετων προγραμμάτων. Η λογική λειτουργίας του είναι αντίστοιχη του GΝU Make και άλλων ανάλογων προγραμμάτων, περιέχει όμως χαρακτηριστικά που διευκολύνουν την διαδικασία μεταγλώττισης αρχείων JAVA.
Βασικά χαρακτηριστικά του Apache Ant είναι ότι εξής:
To παραπάνω θα μπορούσε να αποτυπωθεί στον παρακάτω κώδικα
<target name="A"/> <target name="B" depends="A"/> <target name="C" depends="B"/> <target name="D" depends="B,C"/>
Κάθε στόχος (target) συνήθως είναι μία από τις παρακάτω ενέργειες:
Όπως ήδη αναφέρθηκε, μια καλή πρακτική ανάπτυξης κώδικα JAVA είναι να διαχωρίζουμε τα αρχεία πηγαίου κώδικα *.java σε σχέση με τα μεταγλωττισμένα αρχεία *.class. Για τον σκοπό αυτό σε κάθε project, δημιουργούμε δύο φακέλους, src που περιέχει αρχεία πηγαίου κώδικα και build που περιέχει μεταγλωττισμένα αρχεία. Ο κατάλογος build μπορεί να διακριθεί στους υποκαταλόγους build/classes (περιέχει τα αρχεία *.class) και build/jar (περιέχει τα αρχεία JAR, εφόσον υπάρχουν). Συνολικά η προτεινόμενη δομή καταλόγων είναι η εξής:
Με βάση την παραπάνω δομή ένα αρκετά αντιπροσωπευτικό παράδειγμα ant script είναι το παρακάτω:
<project> <target name="clean"> <delete dir="build"/> <mkdir dir="build/jar"/> <mkdir dir="build/classes"/> </target> <target name="build"> <javac srcdir="src" sourcepath="src" destdir="build/classes"> <!--compilerarg value="-Xlint"/--> </javac> </target> <target name="jar" depends="build"> <jar destfile="build/jar/ce325library.jar" basedir="build/classes" includes="ce325/**" excludes="ce210/temp/**"> </jar> </target> </project>
Για το παραπάνω script διακρίνουμε τα εξής targets:
Προκειμένου να χρησιμοποιήσετε το παραπάνω script μπορείτε να γράψετε:
ant clean; //clean everything ant jar; //compile and create jar file
Εγκατάσταση του πακέτου ant από τον package manager (για εκδόσεις ubuntu/kubuntu ή suse).
Εγκατάσταση της εφαρμογής winant.
Προηγούμενο: Η μεταβλητή περιβάλλοντος CLASSPATH | Περιεχόμενα | Επόμενο: Διεπαφές (Interfaces) |