Build Java Web project with Gradle - dalexo/AcademicManager GitHub Wiki

Εγκατάσταση Gradle Build Tool

Υπάρχουν δύο τρόποι για την εγκατάσταση του gradle:

  1. Θα πρέπει να γίνει χειροκίνητα η εγκατάσταση του gradle τοπικά στο μηχάνημα. Ακολουθούν χρήσιμα links για την εγκατάσταση του gradle σε unix & windows platforms:
  1. Ο δεύτερος (και πιο εύκολος τρόπος) είναι να γίνει αυτόματα η εγκατάσταση του gradle χρησιμοποιώντας ένα μηχανισμό που ονομάζεται gradle wrapper. Στην ουσία πρόκειται για scripts τα οποία όταν τρέχουν αναλαμβάνουν να εγκαταστήσουν το gradle τοπικά στο μηχάνημα μας. Στο repository 'AcademicManager' θα δείτε ότι υπάρχουν τα scripts 'gradlew' & 'gradlew.bat' (για unix & windows platform αντίστοιχα). Έχουν δημιουργηθεί ήδη στο project ώστε να κατεβάσουν την τελέυταία έκδοση του gradle.

Περιγραφή Gradle's Scripts

Στο repository 'AcademicManager' θα δείτε τα παρακάτω scripts:

  • gradlew: Aναλαμβάνει την εγκατάσταση του gradle σε περιβάλλον unix.

  • gradlew.bat: Aναλαμβάνει την εγκατάσταση του gradle σε περιβάλλον windows.

  • gradle/wrapper/gradle-wrapper.jar (Wrapper JAR)

  • gradle/wrapper/gradle-wrapper.properties (Wrapper properties): Περιέχει ιδιότητες/οδηγίες προς τα gradlew scripts πχ ποια έκδοση του gradle θα χρησιμοποιησουν για το build.

  • settings.gradle: Περιέχει επιπλεόν οδηγίες για την διαδικασία του build. Εκτελείται κατά την φάση της αρχικοποίησης. Είναι απαραίτητο σε ένα 'multiproject build' διότι προσδιορίζει ποιά project θα λάβουν μέρος στη διαδικασία του build

  • build.gradle: Περιέχει τις βασικές οδηγίες προς το gradle για την διαδικασία του build. Στην ουσία πρόκειται για κώδικα/εντολές σε μια 'γλώσσα'(dsl) που αναγνωρίζεται απο το gradle build tool. Για περισσότερες πληροφορίες για την συγκεκριμένη γλώσσα δείτε παρακάτω https://docs.gradle.org/3.5/dsl/.

Περιεχόμενα setting.gradle & build.gradle

setting.gradle

include 'AcademicManagerV1' // Ορίζουμε ποιό project θα χρησιμοποιήσουμε

build.gradle

apply plugin :'java' // Χρησιμοποιήσουμε plugins, δηλαδή έτοιμα scripts που μας παρέχει το gradle τα οποία 
apply plugin :'war'  // κάνουν πράγματα χωρίς να χρειάζεται να γράψουμε κώδικα

repositories {
  mavenCentral() // Δηλώνουμε που θα βρει το gradle τις βιβλιοθήκες που χρησιμοποιούμε ώστε να τις κατεβάσει και 
                 //να τις χρησιμοποιήσει όπου χρειάζεται.
}

dependencies { // Δηλώνουμε απο ποιές βιβλιοθήκες εξαρτάται ή χρησιμοποιεί το project μας ώστε το gradle να τις 
               // συμπεριλάβει στη διαδικασία του build

compile group: 'javax.servlet', name: 'jstl', version: '1.2'
compile group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '1.5.8'
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.40'
compile group: 'org.apache.tomcat', name: 'tomcat-catalina', version: '8.5.11'
compile group: 'javax.websocket', name: 'javax.websocket-api', version: '1.1'
compile group: 'org.apache.maven', name: 'maven-plugin-api', version: '2.2.1'

}

sourceSets{
  main{
    java{
      srcDir('src') // Δηλώνουμε σε ποιο κατάλογο υπάρχουν τα java αρχέια ώστε να τα συμπεριλάβει στη διαδικασία 
                    // του build
    }
  }
}

project.webAppDirName = 'WebContent' // Δηλώνουμε σε ποιο κατάλογο (folder) του project μας θα βρει το gradle αρχεία html,css,images,jsp ώστε να τα συμπεριλάβει στο τελικό war