Proficiency in Groovy on Grails

Spread the love

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.

Creazione da IDE

Ho sperimentato per prima la prima modalità IDE, creando l’applicazione Test1:C

Proficiency in Groovy on Grails
Creare un nuovo progetto con Intelij IDEA

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

Proficency in Groovy on Grails: come si presenta l'applicazione Groovy on Grails una volta avviata
Come si presenta l’applicazione Groovy on Grails una volta avviata

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.

Guida di stile

Indice

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.