Προγραμματισμός

Αυτοματοποιήστε τη διαδικασία κατασκευής σας χρησιμοποιώντας Java και Ant

Μια καθορισμένη διαδικασία είναι ένα από τα πιο απαραίτητα αλλά συχνά λιγότερο χρησιμοποιούμενα εργαλεία για την ανάπτυξη λογισμικού. Είναι από τη φύση του ένα γενικό καθήκον που συνοδεύει μια προσπάθεια ανάπτυξης. Μια καθορισμένη διαδικασία κατασκευής διασφαλίζει ότι το λογισμικό στο έργο ανάπτυξης δημιουργείται με τον ίδιο ακριβώς τρόπο κάθε φορά που εκτελείται μια κατασκευή. Καθώς η διαδικασία κατασκευής γίνεται πιο περίπλοκη - για παράδειγμα, με εκδόσεις EJB ή πρόσθετες εργασίες - καθίσταται πιο απαραίτητο να επιτευχθεί μια τέτοια τυποποίηση. Πρέπει να δημιουργήσετε, να τεκμηριώσετε και να αυτοματοποιήσετε την ακριβή σειρά βημάτων όσο το δυνατόν περισσότερο.

Γιατί χρειάζομαι μια καθορισμένη διαδικασία κατασκευής;

Μια καθορισμένη διαδικασία κατασκευής είναι ουσιαστικό μέρος κάθε κύκλου ανάπτυξης, διότι συμβάλλει στην κάλυψη του χάσματος μεταξύ των περιβαλλόντων ανάπτυξης, ολοκλήρωσης, δοκιμών και παραγωγής. Μόνο μια διαδικασία κατασκευής θα επιταχύνει τη μετεγκατάσταση λογισμικού από το ένα περιβάλλον στο άλλο. Αφαιρεί επίσης πολλά ζητήματα που σχετίζονται με τη συλλογή, το classpath ή τις ιδιότητες που κοστίζουν πολλά έργα χρόνο και χρήμα.

Τι είναι το μυρμήγκι;

Το Ant είναι ένα εργαλείο δέσμης ενεργειών ανεξάρτητο από την πλατφόρμα που σας επιτρέπει να δημιουργήσετε τα σενάρια build σας με τον ίδιο τρόπο όπως το εργαλείο "make" σε C ή C ++. Μπορείτε να χρησιμοποιήσετε μεγάλο αριθμό ενσωματωμένων εργασιών στο Ant χωρίς καμία προσαρμογή. Ορισμένες από τις πιο σημαντικές εργασίες εμφανίζονται στον παρακάτω πίνακα, αλλά εξηγούνται λεπτομερέστερα στο παράδειγμα που ακολουθεί.

Ακολουθούν μερικές χρήσιμες εντολές που είναι ενσωματωμένες στη διανομή Ant.

ΕντολήΠεριγραφή
ΜυρμήγκιΧρησιμοποιείται για την εκτέλεση μιας άλλης διαδικασίας μυρμηγκιών μέσα από την τρέχουσα.
CopydirΧρησιμοποιείται για την αντιγραφή ολόκληρου καταλόγου.
Αντιγραφή αρχείουΧρησιμοποιείται για την αντιγραφή ενός μόνο αρχείου.
ΒιογραφικάΧειρίζεται πακέτα / ενότητες που ανακτήθηκαν από ένα αποθετήριο CVS.
ΔιαγράφωΔιαγράφει ένα μόνο αρχείο ή όλα τα αρχεία σε έναν καθορισμένο κατάλογο και τους υποκαταλόγους του.
ΝτελτρίΔιαγράφει έναν κατάλογο με όλα τα αρχεία και τους υποκαταλόγους του.
Π.χ.Εκτελεί μια εντολή συστήματος. Όταν έχει καθοριστεί το χαρακτηριστικό os, τότε η εντολή εκτελείται μόνο όταν το Ant εκτελείται σε ένα από τα καθορισμένα λειτουργικά συστήματα.
ΠαίρνωΛαμβάνει ένα αρχείο από μια διεύθυνση URL.
ΔοχείοΒάζετε ένα σύνολο αρχείων.
ΙάβαΕκτελεί μια κλάση Java εντός του τρέχοντος (Ant) VM ή διχάζει ένα άλλο VM, εάν καθορίζεται.
JavacΜεταγλωττίζει ένα δέντρο προέλευσης εντός του τρέχοντος (Ant) VM.
Javadoc / Javadoc2Δημιουργεί τεκμηρίωση κώδικα χρησιμοποιώντας το εργαλείο javadoc.
ΜκντίρΚάνει έναν κατάλογο.
ΙδιοκτησίαΟρίζει μια ιδιότητα (κατά όνομα και τιμή) ή ένα σύνολο ιδιοτήτων (από αρχείο ή πόρο) στο έργο.
ΡμικΕκτελεί τον μεταγλωττιστή rmic για μια συγκεκριμένη κατηγορία.
ΣφραγίδαΟρίζει τις ιδιότητες DSTAMP, TSTAMP και TODAY στο τρέχον έργο.
ΣτυλΕπεξεργάζεται ένα σύνολο εγγράφων μέσω XSLT.

Ενώ είναι διαθέσιμα άλλα εργαλεία για την κατασκευή λογισμικών, το Ant είναι εύκολο στη χρήση και μπορεί να κυριαρχήσει μέσα σε λίγα λεπτά. Επιπλέον, το Ant σας επιτρέπει να δημιουργήσετε διευρυμένη λειτουργικότητα επεκτείνοντας ορισμένες από τις τάξεις του. Θα δείξω αυτήν την επέκταση σε ένα ακόλουθο παράδειγμα.

Τι πρέπει να χρησιμοποιήσω το Ant;

Πρέπει να εγκαταστήσετε τρία στοιχεία στο μηχάνημά σας για να εκτελέσετε το Ant: JDK, XML parser και Ant (δείτε πόρους για συνδέσμους).

Σε πολλές περιπτώσεις, το πρόγραμμα ανάλυσης XML είναι μέρος των αρχείων lib που διανέμονται με το Servlet runner ή τον Web Server. Εάν όχι, αρκεί ο δωρεάν αναλυτής XML από το java.sun.com.

Η εγκατάσταση του Ant αποτελείται από τη λήψη των αρχείων, την προσθήκη των βιβλιοθηκών κλάσης στο classpath και την προσθήκη των δυαδικών αρχείων Ant στη διαδρομή.

Παράδειγμα σεναρίου

Αυτό το σενάριο παραδείγματος θα σας βοηθήσει να δείξετε την αξία του μυρμηγκιού και να σας δώσει πληροφορίες για τα οφέλη του και πώς μπορείτε να το χρησιμοποιήσετε.

Επειδή μεγάλο μέρος της τρέχουσας ανάπτυξης Java επικεντρώνεται στην Java διακομιστή, επέλεξα μια εφαρμογή από την πλευρά του διακομιστή για το παράδειγμα. Οι προγραμματιστές που εργάζονται σε εφαρμογές Java από διακομιστή συνήθως ενδιαφέρονται για τη συλλογή servlets, την ανάπτυξη αρχείων JSP και την ανάπτυξη αρχείων HTML, αρχείων διαμόρφωσης ή εικόνων.

Ένα κοινό σχέδιο για να γίνει αυτό το build θα περιλαμβάνει την ανάπτυξη μικρών σεναρίων σε γλώσσες ειδικά για την πλατφόρμα βάσει του λειτουργικού συστήματος του διακομιστή. Για παράδειγμα, ένας προγραμματιστής που εργάζεται σε έναν υπολογιστή NT θα μπορούσε να δημιουργήσει ένα αρχείο δέσμης που εκτελεί τις εργασίες σύνταξης και στη συνέχεια εκτελεί την ανάπτυξη. Ωστόσο, εάν το περιβάλλον παραγωγής είχε Unix ή Linux, ο προγραμματιστής θα έπρεπε να ξαναγράψει το σενάριο, διασφαλίζοντας ότι τα σενάρια ήταν συγχρονισμένα.

Εντάξει, δείξε μου πώς λειτουργεί

Ελπίζω λοιπόν να σας πείσω για την ανάγκη χρήσης του Ant και έδειξα πόσο απλό είναι να το εγκαταστήσετε. Τώρα θα σας δείξω πόσο απλό είναι το μυρμήγκι να χρησιμοποιήσετε, ακολουθώντας ένα παράδειγμα που εκτελεί απλή συλλογή και ανάπτυξη.

Απλή διαδικασία κατασκευής με Ant (simple.xml)

Υπάρχουν πολλά να εξηγήσουμε στο παραπάνω παράδειγμα. Αρχικά, πρέπει να κατανοήσετε τη δομή του αρχείου simple.xml. Είναι ένα καλά μορφοποιημένο αρχείο XML που περιέχει μια οντότητα έργου που αποτελείται από διάφορες οντότητες στόχους.

Η πρώτη γραμμή περιέχει πληροφορίες σχετικά με το συνολικό έργο που πρόκειται να κατασκευαστεί.

Τα πιο σημαντικά στοιχεία της γραμμής του έργου είναι το Προκαθορισμένο και το βασισμένος.

ο Προκαθορισμένο Το χαρακτηριστικό αναφέρεται στον προεπιλεγμένο στόχο που πρόκειται να εκτελεστεί. Επειδή το Ant είναι ένα εργαλείο κατασκευής γραμμής εντολών, είναι δυνατό να εκτελεστεί μόνο ένα υποσύνολο των βημάτων στόχου στο αρχείο Ant. Για παράδειγμα, θα μπορούσα να εκτελέσω την ακόλουθη εντολή:

% ant -buildfile simple.xml init 

Αυτό θα εκτελέσει το μυρμήγκι εντολή και εκτελέστε το αρχείο simple.xml μέχρι το μέσα σε αυτό επιτευχθεί ο στόχος. Έτσι, σε αυτό το παράδειγμα, η προεπιλογή είναι παρατάσσω. Η διαδικασία Ant που καλείται στην ακόλουθη γραμμή θα τρέξει μέσω του simple.xml αρχείο μέχρι το παρατάσσω επιτυγχάνεται η εντολή:

% ant -buildfile simple.xml 

ο βασισμένος Το χαρακτηριστικό είναι αρκετά αυτονόητο καθώς είναι ο βασικός κατάλογος από τον οποίο ανακτώνται οι σχετικές αναφορές που περιέχονται στο αρχείο build. Κάθε έργο μπορεί να έχει μόνο ένα βασισμένος χαρακτηριστικό, ώστε να μπορείτε να επιλέξετε είτε να συμπεριλάβετε την πλήρως καταρτισμένη θέση καταλόγου είτε να χωρίσετε το μεγάλο αρχείο έργου σε μικρότερα αρχεία έργου με διαφορετικά βασισμένος γνωρίσματα.

Η επόμενη γραμμή ενδιαφέροντος είναι η γραμμή στόχος. Δύο διαφορετικές εκδόσεις εμφανίζονται εδώ:

ο στόχος Το στοιχείο περιέχει τέσσερα χαρακτηριστικά: όνομα, αν, εκτός, και Εξαρτάται. Το μυρμήγκι απαιτεί το όνομα χαρακτηριστικό, αλλά τα άλλα τρία χαρακτηριστικά είναι προαιρετικά.

Χρησιμοποιώντας Εξαρτάται, μπορείτε να στοίβατε τις εργασίες Ant για να μην ξεκινήσει μια εξαρτημένη εργασία έως ότου ολοκληρωθεί η εργασία από την οποία εξαρτάται. Στο παραπάνω παράδειγμα, η καθαρή εργασία δεν θα ξεκινήσει μέχρι το μέσα σε αυτό η εργασία έχει ολοκληρωθεί. ο Εξαρτάται Το χαρακτηριστικό μπορεί επίσης να περιέχει μια λίστα τιμών διαχωρισμένων με κόμμα που υποδεικνύουν πολλές εργασίες στις οποίες εξαρτάται η εργασία στη συζήτηση.

ο αν και εκτός Οι εντολές σάς επιτρέπουν να καθορίσετε εντολές που πρέπει να εκτελεστούν αν έχει οριστεί μια συγκεκριμένη ιδιότητα ή εκτός αυτή η ιδιότητα έχει οριστεί. ο αν θα εκτελεστεί όταν έχει οριστεί η τιμή της ιδιότητας και το εκτός θα εκτελεστεί εάν η τιμή δεν έχει οριστεί. Μπορείτε να χρησιμοποιήσετε το διαθέσιμος εντολή για να ορίσετε αυτές τις ιδιότητες όπως φαίνεται στο ακόλουθο παράδειγμα, ή μπορείτε να τις ορίσετε μέσω της γραμμής εντολών.

ο μέσα σε αυτό Ο στόχος από το απλό παράδειγμα περιέχει τέσσερις γραμμές ιδιοκτησία εντολές όπως φαίνεται εδώ:

Αυτά τα ιδιοκτησία Οι γραμμές σας επιτρέπουν να καθορίσετε καταλόγους ή αρχεία που χρησιμοποιούνται συνήθως. Μια ιδιότητα είναι ένα απλό ζεύγος τιμών ονομάτων που σας επιτρέπει να αναφέρετε τον κατάλογο ή το αρχείο ως λογική οντότητα και όχι ως φυσικό.

Εάν θέλετε να αναφέρετε το πηγήDir μεταβλητή αργότερα στο αρχείο Ant, θα μπορούσατε απλά να χρησιμοποιήσετε την ακόλουθη σύνταξη για να ειδοποιήσετε το Ant για να αποκτήσετε την τιμή για αυτήν την ετικέτα: $ {sourceDir}.

Δύο άλλες εντολές που υπάρχουν στο παραπάνω buildfile είναι:

Αυτές οι εντολές χρησιμοποιούνται για να διασφαλιστεί ότι δεν υπάρχουν ξένα αρχεία στο έξοδοςDirτάξεις κατάλογο όταν αναφέρθηκε όπως αναφέρθηκε παραπάνω). Η πρώτη εντολή αφαιρεί ολόκληρο το δέντρο που περιέχεται κάτω από το έξοδοςDir. Η δεύτερη εντολή δημιουργεί ξανά τον κατάλογο.

Η τελευταία γραμμή μείζονος ενδιαφέροντος για τον προγραμματιστή είναι η ακόλουθη γραμμή συλλογής:

ο javac Η εντολή απαιτεί έναν κατάλογο προέλευσης (τη θέση εισαγωγής των αρχείων .java) και έναν κατάλογο προορισμού (η θέση εξόδου του αρχείου .classes). Είναι σημαντικό να σημειωθεί ότι όλοι οι κατάλογοι πρέπει είτε να υπάρχουν πριν από την εκτέλεση του μυρμήγκι εντολή ή να δημιουργηθεί χρησιμοποιώντας το mkdir εντολή. Το Ant δεν δημιουργεί καταλόγους με βάση τη διαίσθηση, οπότε πρέπει να δημιουργήσετε το έξοδοςDir, χρησιμοποιώντας το mkdir εντολή πριν από το παραπάνω βήμα σύνταξης.

Μετά το συντάσσω η εργασία έχει ολοκληρωθεί, το παρατάσσω Η εργασία θα εκτελέσει τη λειτουργία αντιγραφής για να μετακινήσει όλα τα αρχεία JSP από τον κατάλογο προέλευσης σε έναν κατάλογο ανάπτυξης. Χρησιμοποιώντας το copydir εντολή, αντιγράφετε ολόκληρο τον κατάλογο JSP από τη μία θέση στην άλλη. Χρησιμοποίησα το αντιγραφή αρχείου εντολή για να αντιγράψετε ένα μεμονωμένο αρχείο ιδιοτήτων ως μέρος της έκδοσης.

Ενώ χρειάστηκαν πολλές γραμμές για να εξηγήσει το παράδειγμα, θα πρέπει να είναι προφανές ότι το Ant είναι ένα εύκολο στη χρήση εργαλείο. Χρησιμοποιώντας αυτό το buildfile ως σημείο εκκίνησης, θα πρέπει να μπορείτε να ενσωματώσετε το Ant στην προσπάθειά σας για ανάπτυξη. ο μυρμήγκι Οι εντολές που εμφανίζονται στο παραπάνω παράδειγμα έχουν περαιτέρω λειτουργικότητα, μερικές από τις οποίες θα συζητηθούν σε αυτό το άρθρο, ενώ οι υπόλοιπες θα σας αφεθούν μαζί με αναφορές στην τεκμηρίωση.

Σημαντικές εργασίες

Σας αφήνει να διαβάσετε τις ενσωματωμένες εργασίες που περιλαμβάνονται στη διανομή Ant. Ανατρέξτε στον οδηγό χρήσης στους πόρους για πληροφορίες σχετικά με κάθε εντολή. Έχω επιλέξει δύο κοινά χρησιμοποιούμενες εντολές ως παραδείγματα πρόσθετων επιλογών που διατίθενται στον διαχειριστή build χωρίς καμία προσαρμογή.

Σύνταξη κώδικα (συμπεριλαμβανομένων των EJB)

Στο απλό παράδειγμα που συζητήθηκε προηγουμένως, είδατε μια απλή μορφή του javac εντολή. Τώρα, εάν το εξετάσετε με περισσότερες λεπτομέρειες, βλέπετε ότι μπορείτε να καθορίσετε τις σημαίες συλλογής όπως κατάργηση, εντοπισμός σφαλμάτων ή βελτιστοποίηση, καθώς και τα αρχεία που θα συμπεριληφθούν ή δεν θα συμπεριληφθούν στη συλλογή.

Μπορείτε να χρησιμοποιήσετε το συμπερίληψη / αποκλεισμός οντότητες εντός του javac εργασία για να συμπεριλάβετε / εξαιρέσετε αρχεία που ταιριάζουν με το μοτίβο στο όνομα χαρακτηριστικό από τη συλλογή. Από το παραπάνω παράδειγμα, θέλετε να συμπεριλάβετε αρχεία που περιέχονται σε οποιονδήποτε κατάλογο που τελειώνει σε .java, αλλά, ταυτόχρονα, θέλετε να εξαιρέσετε αρχεία με το όνομα Script.java εκτός εάν μια ιδιότητα bsf. παρόν έχει οριστεί σε αλήθεια.

Ορίσατε το bsf. παρόν ιδιότητα χρησιμοποιώντας την ακόλουθη εργασία που αναζητά το classpath για το όνομα κλάσης που ορίζεται και ορίζεται bsf. παρόν σύμφωνα με τα αποτελέσματα αναζήτησης:

ο javac Η εντολή δεν θα περιλαμβάνει αρχεία που ονομάζονται version.txt από τη συλλογή βάσει της παραπάνω εντολής αποκλεισμού.

Δημιουργία javadoc

Ένα άλλο έργο που μπορεί να βοηθήσει η Ant να αυτοματοποιήσει είναι η δημιουργία του javadoc. Μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή για να δημιουργήσετε το javadoc:

Τα πακέτα καθορίζουν τα συνολικά πακέτα που θα περιλαμβάνει το javadoc. ο πηγή πηγής το χαρακτηριστικό δείχνει προς τη θέση των αρχείων προέλευσης. ο javadoc Η εντολή παρέχει επίσης χαρακτηριστικά που σας επιτρέπουν να καθορίσετε τον τίτλο του παραθύρου και του εγγράφου. Μπορείτε επίσης να συμπεριλάβετε μια ειδοποίηση περί πνευματικών δικαιωμάτων στο κάτω μέρος κάθε σελίδας javadoc, χρησιμοποιώντας το κάτω μέρος Χαρακτηριστικό.

Μπορεί το μυρμήγκι να κάνει το XYZ;

Σε αυτό το σημείο, έχετε δει μερικές από τις πιθανές εργασίες στη διαδικασία κατασκευής που μπορεί να αυτοματοποιήσει το Ant. Αυτές οι εργασίες περιλαμβάνονται έξω από το κουτί στο Ant. Ίσως θελήσετε να προσαρμόσετε το Ant για να σας βοηθήσει να εκτελέσετε μερικές πιο δύσκολες εργασίες, όπως η δημιουργία EJBs και η εκτέλεση απομακρυσμένης διαχείρισης διαμόρφωσης. Μερικοί από εσάς μπορεί να θέλετε να αυξήσετε τις δυνατότητες αναφοράς του Ant ή να δημιουργήσετε ένα περιβάλλον εργασίας χρήστη που μπορεί να εκτελέσει τη διαδικασία Ant.

Η απλή απάντηση στην ερώτηση "Μπορεί το μυρμήγκι να κάνει το XYZ;" είναι "Ναι, αλλά ίσως χρειαστεί να το προσαρμόσετε."

Επέκταση Ant

Δύο επεκτάσεις Ant είναι ενδιαφέρουσες να συζητηθούν σε αυτό το σημείο. Αυξάνουν τις αναφορές και τη δυνατότητα διανομής κώδικα από απόσταση χρησιμοποιώντας το Ant.

Αναφορές βελτιώσεων