This shows you the differences between two versions of the page.
java:ant [2016/02/24 14:21] doufexi [Windows] |
java:ant [2016/02/26 11:15] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Αυτόματη μεταγλώττιση με χρήση Apache Ant ====== | ||
- | Το [[http://ant.apache.org/|Apache Ant]] είναι ένα εργαλείο δημιουργίας διεργασιών αλληλεξαρτούμενων μεταξύ τους με στόχο την μεταγλώττιση σύνθετων προγραμμάτων. Η λογική λειτουργίας του είναι αντίστοιχη του [[https://www.gnu.org/software/make/|GΝU Make]] και άλλων ανάλογων προγραμμάτων, περιέχει όμως χαρακτηριστικά που διευκολύνουν την διαδικασία μεταγλώττισης αρχείων JAVA. | ||
- | |||
- | Βασικά χαρακτηριστικά του [[http://ant.apache.org/|Apache Ant]] είναι ότι εξής: | ||
- | - Τα configuration/build αρχεία έχουν format [[http://www.w3schools.com/xml|XML]]. | ||
- | - Το configuration αρχείο έχει όνομα **build.xml**. | ||
- | - Κάθε αρχείο περιέχει έναν η περισσότερους στόχους. Οι στόχοι είναι αλληλεξαρτούμενοι δηλαδή αν έχετε τους στόχους **Α**, **B**, **C**, **D** μπορείτε να δημιουργήσετε σχέσεις εξάρτησης μεταξύ τους ως παρακάτω (το παράδειγμα είναι ενδεικτικό): | ||
- | - **B** [depends ->] **A** | ||
- | - **C** [depends ->] **A** | ||
- | - **D** [depends ->] **B,C** | ||
- | |||
- | To παραπάνω θα μπορούσε να αποτυπωθεί στον παρακάτω κώδικα | ||
- | <code xml> | ||
- | <target name="A"/> | ||
- | <target name="B" depends="A"/> | ||
- | <target name="C" depends="B"/> | ||
- | <target name="D" depends="B,C"/> | ||
- | </code> | ||
- | |||
- | Κάθε στόχος (//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 είναι το παρακάτω: | ||
- | <code xml 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> | ||
- | </code> | ||
- | |||
- | Για το παραπάνω //script// διακρίνουμε τα εξής //targets//: | ||
- | * **clean:** διαγράφει τον κατάλογο **build** μαζί με σύνολο των περιεχομένων του. Στη συνέχεια δημιουργεί την ιεραρχία καταλόγων **build/classes** και **build/jar**. | ||
- | * **build:** μεταγλωττίζει τα αρχεία ***.java** | ||
- | * **jar:** δημιουργεί αρχείο ce210library.jar προσθέτοντας όλα τα αρχεία που βρίσκονται στον κατάλογο **build/classes/ce210/**, αλλά όχι στον κατάλογο **build/classes/ce210/temp**. | ||
- | |||
- | Προκειμένου να χρησιμοποιήσετε το παραπάνω script μπορείτε να γράψετε: | ||
- | <code> | ||
- | ant clean; //clean everything | ||
- | ant jar; //compile and create jar file | ||
- | </code> | ||
- | ===== Εγκατάσταση Apache Ant ===== | ||
- | |||
- | ==== Linux ==== | ||
- | |||
- | Εγκατάσταση του πακέτου **ant** από τον package manager (για εκδόσεις ubuntu/kubuntu ή suse). | ||
- | |||
- | ==== Windows ==== | ||
- | |||
- | Εγκατάσταση της εφαρμογής [[https://code.google.com/p/winant/|winant]]. | ||
- | |||
- | |Προηγούμενο: [[ :java:classpath | Η μεταβλητή περιβάλλοντος CLASSPATH ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο: [[ :java:interfaces | Διεπαφές (Interfaces) ]] | |