Creare nuovi progetti con il framework MVC per il mondo Java Groovy on Grails è un’operazione che può essere svolta in diversi modi:
- Da IDE: io uso Intellij Ultimate di JetBrains, provenendo dalla programmazione PHP (JetBrains è il produttore di PHPStorm).
- Dal sito di Grails: https://start.grails.org
- Da linea di comando
Sommario
Creazione da IDE
Ho sperimentato per prima la prima modalità IDE, creando l’applicazione Test1:C

Il wizard richiede di impostare la versione di Grails da utilizzare, la Java Virtual Machine che eseguirà la compilazione e il tipo dell’applicazione (se app o se plugin)

Per questa applicazione uso Java 1.8 come JVM e Grails 2.3.11 per allinearmi con le versioni utilizzate dal Cliente. Alla fine mi viene chiesto il nome dell’applicazione:

Parte il build dell’applicazione utilizzando la versione di Grails 2.3.1 selezionata:
/usr/lib/jvm/jdk1.8.0_111/bin/java -Dgrails.home=/home/marcob/.sdkman/candidates/grails/2.3.11 -Dtools.jar=/usr/lib/jvm/jdk1.8.0_111/lib/tools.jar -Dgroovy.starter.conf=/home/marcob/.sdkman/candidates/grails/2.3.11/conf/groovy-starter.conf -Dbase.dir=/home/marcob/IdeaProjects/Test1 -Dfile.encoding=UTF-8 -classpath /home/marcob/.sdkman/candidates/grails/2.3.11/lib/org.codehaus.groovy/groovy-all/jars/groovy-all-2.1.9.jar:/home/marcob/.sdkman/candidates/grails/2.3.11/dist/grails-bootstrap-2.3.11.jar org.codehaus.groovy.grails.cli.support.GrailsStarter --main org.codehaus.groovy.grails.cli.GrailsScriptRunner --conf /home/marcob/.sdkman/candidates/grails/2.3.11/conf/groovy-starter.conf "idea-print-project-settings -plain-output" |Loading Grails 2.3.11 |Configuring classpath . |Environment set to development .... |Installing zip scaffolding-2.0.3.zip… ... |Installed plugin scaffolding-2.0.3 .......... ---=== IDEA Grails build settings ===--- # Tue Aug 13 12:12:01 CEST 2019 grails.work.dir=/home/marcob/.grails/2.3.11 grails.project.work.dir=target/work .... Compile.0=/home/marcob/.sdkman/candidates/grails/2.3.11/lib/org.codehaus.groovy/groovy-all/jars/groovy-all-2.1.9.jar Compile.1=/home/marcob/.sdkman/candidates/grails/2.3.11/dist/grails-plugin-rest-2.3.11.jar .... Runtime.0=/home/marcob/.sdkman/candidates/grails/2.3.11/lib/org.codehaus.groovy/groovy-all/jars/groovy-all-2.1.9.jar Runtime.1=/home/marcob/.sdkman/candidates/grails/2.3.11/dist/grails-plugin-rest-2.3.11.jar .... Test.0=/home/marcob/.sdkman/candidates/grails/2.3.11/lib/javax.servlet/javax.servlet-api/jars/javax.servlet-api-3.0.1.jar Test.1=/home/marcob/.sdkman/candidates/grails/2.3.11/lib/org.codehaus.groovy/groovy-all/jars/groovy-all-2.1.9.jar .... Provided.0=/home/marcob/.sdkman/candidates/grails/2.3.11/lib/javax.servlet/javax.servlet-api/jars/javax.servlet-api-3.0.1.jar Build.0=/home/marcob/.sdkman/candidates/grails/2.3.11/lib/xalan/serializer/jars/serializer-2.7.1.jar Build.1=/home/marcob/.sdkman/candidates/grails/2.3.11/dist/grails-bootstrap-2.3.11.jar .... ---=== End IDEA Grails build settings ===---
Ometto per comodità la maggior parte del log che non presenta messaggi d’errore.
Alla fine l’applicazione è creata e viene popolato l’albero dei file all’interno della directory
~/IdeaProjects/Test1

Creazione dal sito di Grails
Si accede a https://start.grails.org

Si seleziona innanzitutto il tipo di progetto: Applicazione o plugin: la stessa possibilità c’è nella IDE ma per iniziare partiamo dalle Applicazioni.
Si sceglie il nome dell’applicazione e la versione di Grails: purtropppo le versioni selezionabili non sono vecchie come quelle che usa il mio Cliente quindi scelgo la 3.2.13 (che ho anche a bordo della mia macchina):
marcob@jsbach[12:32:28]:IdeaProjects$ sdk list grails Available Grails Versions 4.0.0 3.1.15 3.0.2 2.2.2 4.0.0.RC2 3.1.14 3.0.1 2.2.1 4.0.0.RC1 3.1.13 3.0.0 2.2.0 4.0.0.M2 3.1.12 2.5.6 * 2.1.5 4.0.0.M1 3.1.11 2.5.5 2.1.4 3.3.10 3.1.10 2.5.4 2.1.3 3.3.9 3.1.9 2.5.3 2.1.2 3.3.8 3.1.8 2.5.2 2.1.1 3.3.7 3.1.7 2.5.1 2.1.0 3.3.6 3.1.6 2.5.0 2.0.4 3.3.5 3.1.5 2.4.5 2.0.3 3.3.4 3.1.4 2.4.4 2.0.2 3.3.3 3.1.3 2.4.3 2.0.1 3.3.2 3.1.2 2.4.2 2.0.0 3.3.1 3.1.1 2.4.1 1.3.9 3.3.0 3.1.0 2.4.0 1.3.8 >*3.2.13 3.0.17 * 2.3.11 1.3.7 3.2.12 3.0.16 2.3.10 1.3.6 3.2.11 3.0.15 2.3.9 1.3.5 3.2.10 3.0.14 2.3.8 1.3.4 3.2.9 3.0.13 2.3.7 1.3.3 3.2.8 3.0.12 2.3.6 1.3.2 3.2.7 3.0.11 2.3.5 1.3.1 3.2.6 3.0.10 2.3.4 1.3.0 3.2.5 3.0.9 2.3.3 1.2.5 3.2.4 3.0.8 2.3.2 1.2.4 3.2.3 3.0.7 2.3.1 1.2.3 3.2.2 3.0.6 2.3.0 1.2.2 3.2.1 3.0.5 2.2.5 1.2.1 3.2.0 3.0.4 2.2.4 1.2.0 3.1.16 3.0.3 * 2.2.3 ======================================================================= - local version - installed - currently in use
Come si vede, ho installato le versioni 2.1.5, 2.2.3, 2.3.11, 3.2.13 e quest’ultima è quella preselezionata nella sessione di shell in cui ho lanciato il comando
Tra le features, lascio le scelte standard: Hibernate5 in particolare è lo strato software che permette di astrarre dal livello database (ORM, Object Relationship Mapping).
Premendo il pulsante Generate viene scaricato il package myapp.zip:

Lo scarico e unzippo dentro a ~/IdeaProjects/Test1. Dopo di che lo apro con la IDE e questa si deve riscaricare tutti i package dipendenti, ad esempio Gradle (che è il tool per fare il build della applicazione che manca nel file zip)
Download https://services.gradle.org/distributions/gradle-3.4.1-bin.zip (70,31 MB) Download https://services.gradle.org/distributions/gradle-3.4.1-bin.zip finished succeeded, took 57 s 539 ms Gradle Daemon started in 840 ms Download https://repo.grails.org/grails/core/org/grails/grails-gradle-plugin/3.2.13/grails-gradle-plugin-3.2.13.pom ...

Creazione da linea di comando
L’ultimo modo per creare l’applicazione è da linea di comando. Essa assomiglia molto alla modalità php artisan
per creare le applicazioni in PHP/Laravel. Innanzitutto si scarica SDKMan:
Installazione di SDKMan
$ curl -s "https://get.sdkman.io" | bash
Installazione di Grails
$ sdk install grails 4.0.1
Verifico:
$ grails --version | Grails Version: 4.0.1 | JVM Version: 1.8.0_77
Creare l’applicazione
$ grails create-app it.betaingegneria.apps.myApp
Dopo di che si può sviluppare con l’IDE che si vuole.
Build and Go!
Una volta terminata la fase di startup dell’applicazione è il momento di programmare e costruire l’applicazione vera e propria. Ma a questo punto siamo già davanti ad una applicazione di base funzionante. Usiamo gradle
(come artisan
) e facciamo il build aprendo un terminale da dentro la directory del progetto
marcob@jsbach[16:12:15]:myapp$ ./gradlew bootRun Starting a Gradle Daemon (subsequent builds will be faster) :compileJava NO-SOURCE :compileGroovy :buildProperties :processResources :classes :findMainClass :bootRun Grails application running at http://localhost:8080 in environment: development Building 85% > :bootRun
Quando lo script ha raggiunto la fase “running”, puntare il browser all’indirizzo http://localhost:8080

Attenzione! c’è un comando in più da dare: prima di avviare il build, rendere eseguibile lo script gradlew:
marcob@jsbach[16:11:48]:myapp$ chmod a+x gradlew
Importazione in Intellij IDEA
Gradle Daemon started in 1 s 722 ms CONFIGURE SUCCESSFUL Total time: 10.864 secs Manifest.writeTo(Writer) has been deprecated and is scheduled to be removed in Gradle 4.0. Please use Manifest.writeTo(Object) instead.
Commenti recenti