User Tools

Site Tools


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

Η εγκατάσταση NetBeans εγκαθιστά και τα απαραίτητα εργαλεία μεταγλώττισης. Εάν χρησιμοείτε NetBeans δεν απαιτείται η επιπλέον εγκατάσταση Ant.

Linux

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

Windows

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

java/ant.txt · Last modified: 2020/02/21 12:38 by gthanos