java:ant

Αυτόματη μεταγλώττιση με χρήση Apache Ant

Το Apache Ant είναι ένα εργαλείο δημιουργίας διεργασιών αλληλεξαρτούμενων μεταξύ τους με στόχο την μεταγλώττιση σύνθετων προγραμμάτων. Η λογική λειτουργίας του είναι αντίστοιχη του GΝU Make και άλλων ανάλογων προγραμμάτων, περιέχει όμως χαρακτηριστικά που διευκολύνουν την διαδικασία μεταγλώττισης αρχείων JAVA.

Βασικά χαρακτηριστικά του Apache Ant είναι ότι εξής:

  1. Τα configuration/build αρχεία έχουν format XML.
  2. Το configuration αρχείο έχει όνομα build.xml.
  3. Κάθε αρχείο περιέχει έναν η περισσότερους στόχους. Οι στόχοι είναι αλληλεξαρτούμενοι δηλαδή αν έχετε τους στόχους Α, B, C, D μπορείτε να δημιουργήσετε σχέσεις εξάρτησης μεταξύ τους ως παρακάτω (το παράδειγμα είναι ενδεικτικό):
    1. B [depends →] A
    2. C [depends →] A
    3. D [depends →] B,C

To παραπάνω θα μπορούσε να αποτυπωθεί στον παρακάτω κώδικα

<target name="A"/>
<target name="B" depends="A"/>
<target name="C" depends="B"/>
<target name="D" depends="B,C"/>

Κάθε στόχος (target) συνήθως είναι μία από τις παρακάτω ενέργειες:

  • διαγραφή/καθαρισμός μεταγλωττισμένων αρχείων και καταλόγων.
  • δημιουργία αρχείων/καταλόγων.
  • μεταγλώττιση ενός ή περισσότερων αρχείων.
  • δημιουργία jar αρχείου.

Διάρθρωση καταλόγων αρχείων *.java και εκτελέσιμων αρχείων *.class

Όπως ήδη αναφέρθηκε, μια καλή πρακτική ανάπτυξης κώδικα JAVA είναι να διαχωρίζουμε τα αρχεία πηγαίου κώδικα *.java σε σχέση με τα μεταγλωττισμένα αρχεία *.class. Για τον σκοπό αυτό σε κάθε project, δημιουργούμε δύο φακέλους, src που περιέχει αρχεία πηγαίου κώδικα και build που περιέχει μεταγλωττισμένα αρχεία. Ο κατάλογος build μπορεί να διακριθεί στους υποκαταλόγους build/classes (περιέχει τα αρχεία *.class) και build/jar (περιέχει τα αρχεία JAR, εφόσον υπάρχουν). Συνολικά η προτεινόμενη δομή καταλόγων είναι η εξής:

  • src –> πηγαίoς κώδικας
  • build/classes –> αρχεία *.class
  • build/jar –> αρχεία *.jar

Παράδειγμα Ant Script

Με βάση την παραπάνω δομή ένα αρκετά αντιπροσωπευτικό παράδειγμα ant script είναι το παρακάτω:

build.xml
<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:

  • clean: διαγράφει τον κατάλογο build μαζί με σύνολο των περιεχομένων του. Στη συνέχεια δημιουργεί την ιεραρχία καταλόγων build/classes και build/jar.
  • build: μεταγλωττίζει τα αρχεία *.java
  • jar: δημιουργεί αρχείο ce210library.jar προσθέτοντας όλα τα αρχεία που βρίσκονται στον κατάλογο build/classes/ce210/, αλλά όχι στον κατάλογο build/classes/ce210/temp.

Προκειμένου να χρησιμοποιήσετε το παραπάνω script μπορείτε να γράψετε:

ant clean; //clean everything
ant jar;   //compile and create jar file

Εγκατάσταση Apache Ant

Linux

Εγκατάσταση του πακέτου ant από τον package manager (για εκδόσεις ubuntu/kubuntu ή suse).

Windows

Εγκατάσταση της εφαρμογής winant.

java/ant.txt · Last modified: 2016/02/26 11:15 (external edit)