ΕΝΟΤΗΤΑ 4 - Archetypes
ΕΝΟΤΗΤΑ 4 - Archetypes
Στο σημερινό δωρεάν μάθημα Apache Maven, θα εξηγήσουμε τι είναι τα archetypes και ποιες είναι οι κατάλληλες εντολές για να δημιουργήσουμε ένα maven project χρησιμοποιώντας archetypes.
Ας ξεκινήσουμε πρώτα δίνοντας τον ορισμό του archetype. Όσοι από εσάς έχετε έστω και λίγη εμπειρία με java προγραμματισμό, θα έχετε σίγουρα προσέξει ότι υπάρχουν κάποιες δομικές διαφορές ανάμεσα σε ένα java project και σε ένα Java EE project. Για παράδειγμα το Java EE project απαιτεί την ύπαρξη ενός WEB-INF φακέλου κάτι που δεν είναι απαραίτητο να υπάρχει σε ένα απλό Java project. Επίσης, θα έχετε προσέξει, ότι αν και τα δύο αυτά projects έχουν κάποιες διαφορές στην δομή τους όταν τα συγκρίνουμε, πάντα όμως ξεκινάμε να τα δημιουργήσουμε με τον ίδιο τρόπο. Με άλλα λόγια η αρχική δομή δημιουργείται πάντα με τον ίδιο τρόπο. Μετά φυσικά το project θα μεγαλώσει και σε δομή και σε βιβλιοθήκες ανάλογα με τις ανάγκες του εκάστοτε project αλλά η αρχική δομή πάντα είναι η ίδια. Τι είναι λοιπόν ένα archetype? Είναι έτοιμα βασικά projects, ή ένα καλούπι (template) που μπορούμε να χρησιμοποιήσουμε για να δημιουργήσουμε την αρχική δομή ενός java project ή Java EE project. Με αυτό τον τρόπο έχουμε ένα βασικό αλλά ταυτόχρονα λειτουργικό java project πάνω στο οποίο μπορούμε να στηρίξουμε την υπόλοιπη ανάπτυξη της εφαρμογής μας. Κάθε project δημιουργημένο με apache maven archetype περιέχει όλα τα απαραίτητα αρχεία του εκάστοτε java project – standard ή enterprise.
Η κοινότητα του Apache Maven περέχει στην κυριολεξία αρκετές εκατοντάδες έτοιμα templates για διάφορα είδη project που θέλετε να δημιουργήσετε. Το Apache Maven που έχουμε εγκαταστήσει στον υπολογιστή μας, μας επιτρέπει όχι μόνο να χρησιμοποιήσουμε αυτά τα templates αλλά και να δημιουργήσουμε καινούργια. Ας ξεκινήσουμε όμως να δούμε μερικές εντολές και πως αυτές αργότερα θα συνδυαστούν με το IntelliJ.
Πριν ξεκινήσουμε, ας δημιουργήσουμε ένα φάκελο στον υπολογιστή μας μέσα στον οποίο θα αποθηκεύσουμε τα project που πρόκειται να δημιουργήσουμε σε αυτή την ενότητα σαν πρακτική. Μετά, ανοίξτε ένα καινούργιο cmd terminal και αλλάξτε το directory στο φάκελο που δημιουργήσατε.
Τώρα μπορούμε να εκτελέσουμε την εντολή mvn archetype:generate και να δούμε όλα τα templates από τα οποία μπορούμε να δημιουργήσουμε ένα καινούργιο java project.
Για να γυρίσετε πίσω στο command prompt απλά πατήστε Ctrl + C. Υπάρχει ένας πολύ μεγάλος αριθμός archetypes στο apache maven που είναι αριθμημένα, έχουν όνομα και μια σύντομη περιγραφή που εξηγεί τι είδος archetype είναι το καθένα. Για να επιλέξουμε το ένα από τα διαθέσιμα archetype δεν έχουμε παρά να επιλέξουμε έναν αριθμό και να πατήσουμε Enter. Η λίστα όμως που βλέπουμε δεν περικλείει μόνο τα βασικά archetypes που έχει να μας προσφέρει το repository του apache maven αλλά και archetypes που έχουν δημιουργήσει απλοί προγραμματιστές.
Μια καλύτερη προσέγγιση ίσως θα ήταν να φιλτράρουμε την λίστα πριν εμφανιστεί. Για να το πετύχουμε αυτό θα προσθέσουμε την επιλογή Dfilter στην archetype:generate εντολή που μόλις εκτελέσαμε. Με την συγκεκριμένη επιλογή θα ζητήσουμε να δούμε μόνο τα archetypes που έχει δημιουργήσει το apache maven και όχι οι προγραμματιστές. Εκτελούμε λοιπόν την εξής εντολή:
mvn archetype:generate -Dfilter=org.apache.maven.archetypes:
Η προεπιλεγμένη επιλογή είναι η 9. Αν διαβάσουμε την περιγραφή θα δούμε ότι αυτό το archetype θα δημιουργήσει ένα απλό maven project. Οπότε το επιλέγουμε και πατάμε Enter.
Από τις εκδόσεις που υπάρχουν για το συγκεκριμένο archetype, επιλέγουμε την ποιο τελευταία. Επιλέγουμε 8 και πατάμε Enter.
Στο επόμενο βήμα πρέπει να ορίσουμε το groupId. Γράφουμε com.mycompany και πατάμε Enter.
Στο επόμενο βήμα θα πρέπει να ορίσουμε το artifactId. Γράφουμε το όνομα SimpleMavenProject και πατάμε Enter.
Στο επόμενο βήμα δεχόμαστε το προτεινόμενο όνομα για την έκδοση του προγράμματος. Αργότερα όταν προσθέσετε περισσότερο κώδικα στο project τότε θα αλλάξετε το version number. Για τώρα απλά πατάμε Enter να δεχτούμε το προτεινόμενο όνομα.
Τέλος, το όνομα του πακέτου μέσα στο οποίο θα γράφουμε τις java κλάσεις μας προτείνεται από το maven να είναι το ίδιο όπως το groupId. Το δεχόμαστε αυτό πατώντας και εδώ Enter.
Αν γράψουμε Y στο τελευταίο βήμα τότε θα δημιουργηθεί το project μας.
Μπορούμε να δούμε την δομή του καινούργιο project μέσα από το command prompt, αλλά είναι πιο εύκολο και πιο γρήγορο να ανοίξουμε το project με το IntelliJ. Αφού ξεκινήσουμε το IntelliJ, πηγαίνουμε στο File -> Open αφού βρούμε το project μας το ανοίγουμε.
Υπάρχει ένας βασικός κώδικας, μέσα σε μια κλάση που ονομάζεται App. Όμως, θα πρέπει να ανοίξουμε και το pom.xml και να κάνουμε μια βασική αλλαγή που είναι η έκδοση της Java. Ας αλλάξουμε λοιπόν την έκδοση από 1.7 σε 11.
Αφού κάνουμε save τις αλλαγές, πατάμε στο maven εικονίδιο στη δεξιά πλευρά του IntelliJ. Ανοίγουμε το Lifecycle κάνουμε διπλό κλικ επάνω στο install για να μπορέσουμε να κάνουμε build το project μας.
Ας δούμε τώρα πως θα μπορούσαμε να ακολουθήσουμε την ίδια διαδικασία δημιουργίας ενός maven project μέσα από το IntelliJ. Πατάμε File -> New -> Project. Βεβαιωνόμαστε ότι αριστερά έχουμε επιλέξει Maven και έχουμε επιλέξει Create from archetype. Τέλος επιλέγουμε το maven-archetype-webapp για να δημιουργήσουμε ένα απλό Java Web Application. Όταν έχουμε επιλέξει όλες τις παραπάνω επιλογές πατάμε Next.
Στο επόμενο βήμα ορίζουμε το groupId, artifactId και version και μετά πατάμε Next.
Στο τελευταίο βήμα απλά επιβεβαιώνουμε τις επιλογές μας και πατάμε Finish.
Και σε αυτό το project, θα πρέπει να ανοίξουμε το pom.xml και να αλλάξουμε την έκδοση της java όπως και ότι άλλο θεωρούμε ότι χρειάζεται να γίνει αλλαγή. Εκτελούμε και σε αυτό το project την εντολή install του maven για να το κάνουμε Build.
Τα ίδια βήματα που ακολουθήσαμε μέσα από το IntelliJ για να δημιουργήσουμε ένα maven project, μπορείτε να τα βρείτε σε κάθε μοντέρνο IDE όπως NetBeans, Eclipse ακόμα και στο Visual Studio Code. Από την επόμενη ενότητα θα εξηγήσουμε τις επιλογές του maven όπως clean και install και γενικότερα θα αναλύσουμε το lifecycle μιας εφαρμογής δημιουργημένη με maven.
Γίνε Χορηγός στη Γνώση
ΕΙΣΗΓΗΤΗΣ
Μιχάλης Κασάπογλου
Ο Μιχάλης Κασάπογλου, είναι ένας από τους πιο έμπειρους τεχνικούς εκπαιδευτές στον χώρο του προγραμματισμού με πάνω από 20 χρόνια εμπειρία. Έχει εργαστεί σαν IT Operations Manager, Senior Programmer, και Training Team Leader ενώ κατέχει και αρκετές πιστοποιήσεις που καλύπτουν ένα μεγάλο φάσμα τεχνολογιών στο προγραμματισμό, σε βάσεις δεδομένων και cloud. Στον ελεύθερο του χρόνο διατηρεί ένα τεχνολογικό blog στο οποίο θα βρείτε αρκετά δωρεάν μαθήματα προγραμματισμού για αρχάριους.