java:ant

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

java:ant [2016/02/24 14:20]
doufexi
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) ​ ]] 
java/ant.txt · Last modified: 2016/02/26 11:15 (external edit)