Sommario
Proficiency in Groovy on Grails
Creare nuovi progetti Groovy on Grails consente di conseguire una proficiency su questo framework MVC utilizzato da sviluppatori provenienti dal mondo Java. In questo articolo vediamo come si possono creare nuovi progetti con l’utilizzo di diversi strumenti.
- 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
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 utiizzare, la Java Virtuaol 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

Semplicemente si seleziona 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:
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 php 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