Grails

Page last edited 658 giorni 22 ore fa
Da wiki.betaingegneria.it.

Grails[modifica]

Download SDK[modifica]

Un package per gestire le applicazioni Java SDK

Download Grails[modifica]

Nel sito Grails si trova tutto, i package da scaricare e le istruzioni. Qui di seguito ripeto le operazioni indicate nel sito ed eseguite live, ognuna con un po' di output per capire cosa succede.

Installiamo SDK[modifica]

   $ curl -s "https://get.sdkman.io" | bash
   ...
   All done!
   
   Please open a new terminal, or run the following in the existing one:
   
   	 source "/home/marcob/.sdkman/bin/sdkman-init.sh"
   
   Then issue the following command:
   
   	 sdk help
   
   Enjoy!!!
   
   $ source "/home/marcob/.sdkman/bin/sdkman-init.sh"
   $

(non succede nulla)

Io ho installato SDK, in alcuni altri posti usano installare invece GVM (Groovy enVironment Manager) an open source tool for managing parallel Versions of multiple Software Development Kits on most Unix based systems (Vedi ad esempio qui)


ora usiamo sdk per installare java[modifica]

   $ sdk install java
   
   Oracle requires that you agree with the Oracle Binary Code License Agreement
   prior to installation. The license agreement can be found at:
   
     http://www.oracle.com/technetwork/java/javase/terms/license/index.html
   
   Do you agree to the terms of this agreement? (Y/n): 
   Downloading: java 8u111
   
   In progress...
   
   ######################################################################## 100,0%
   
   Repackaging Java 8u111...
   
   Done repackaging...
   
   Installing: java 8u111
   Done installing!
   
   Do you want java 8u111 to be set as default? (Y/n): n

Ho risposto di No se no non mi funziona più una mazza di Oracle né di Mirth!

6) Ora installo Grails![modifica]

   marcob@jsbach:~$ sdk install grails 3.2.3
   
   Downloading: grails 3.2.3
   
   In progress...
   
   ##############################################################            86,4%
   ...
   ######################################################################## 100,0%
   
   Installing: grails 3.2.3
   Done installing!
   
   Do you want grails 3.2.3 to be set as default? (Y/n): Y
   
   Setting grails 3.2.3 as default.
   | Grails Version: 3.2.3
   | Groovy Version: 2.4.7
   | JVM Version: 1.8.0_73
   marcob@jsbach:~$

Quest'ultimo output esce anche se interroghiamo il sistema per farci dare la versione di grails istallata:

   $ grails -version
   | Grails Version: 3.2.3
   | Groovy Version: 2.4.7
   | JVM Version: 1.8.0_73

Notiamo che c'è Grails, Groovy e la Java Virtual Machine.

GVM[modifica]

Nel tutorial di Udemy utilizza invece di SDK, GVM. Qui praticamente si fa riferimento alla SDK che ho già installata nel sistema.

Dal tutorial detto, però, non riesco a trovare l'indirizzo che dicono, sembra non sia più nei DNS (http://gvmtool.net); in ogni caso cercando gvm tool su Google vengo reindirizzato al sito sdkman.io, come già descrito sopra. Provo a rilanciare il comando è mi dice che è già tutto ok:

   marcob@jsbach:~/Documenti/workspace/java/grails$ curl -s "https://get.sdkman.io" | bash
                                                                  		         
   Thanks for using...                                            		         
                                                                  		         
                                                                  		         
        SSSSSSSSSSSSSSS DDDDDDDDDDDDD       KKKKKKKKK    KKKKKKK                  
      SS:::::::::::::::SD::::::::::::DDD    K:::::::K    K:::::K                  
     S:::::SSSSSS::::::SD:::::::::::::::DD  K:::::::K    K:::::K                  
     S:::::S     SSSSSSSDDD:::::DDDDD:::::D K:::::::K   K::::::K                  
     S:::::S              D:::::D    D:::::DKK::::::K  K:::::KKK                  
     S:::::S              D:::::D     D:::::D K:::::K K:::::K                     
      S::::SSSS           D:::::D     D:::::D K::::::K:::::K                      
       SS::::::SSSSS      D:::::D     D:::::D K:::::::::::K                       
         SSS::::::::SS    D:::::D     D:::::D K:::::::::::K                       
            SSSSSS::::S   D:::::D     D:::::D K::::::K:::::K                      
                 S:::::S  D:::::D     D:::::D K:::::K K:::::K                     
                 S:::::S  D:::::D    D:::::DKK::::::K  K:::::KKK                  
     SSSSSSS     S:::::SDDD:::::DDDDD:::::D K:::::::K   K::::::K                  
     S::::::SSSSSS:::::SD:::::::::::::::DD  K:::::::K    K:::::K                  
     S:::::::::::::::SS D::::::::::::DDD    K:::::::K    K:::::K                  
      SSSSSSSSSSSSSSS   DDDDDDDDDDDDD       KKKKKKKKK    KKKKKKK                  
                                                                                  
                                                                                  
                         mmmmmmm    mmmmmmm     aaaaaaaaaaaaa  nnnn  nnnnnnnn     
                       mm:::::::m  m:::::::mm   a::::::::::::a n:::nn::::::::nn   
                      m::::::::::mm::::::::::m  aaaaaaaaa:::::an::::::::::::::nn  
                      m::::::::::::::::::::::m           a::::ann:::::::::::::::n 
                      m:::::mmm::::::mmm:::::m    aaaaaaa:::::a  n:::::nnnn:::::n 
                      m::::m   m::::m   m::::m  aa::::::::::::a  n::::n    n::::n 
                      m::::m   m::::m   m::::m a::::aaaa::::::a  n::::n    n::::n 
                      m::::m   m::::m   m::::ma::::a    a:::::a  n::::n    n::::n 
                      m::::m   m::::m   m::::ma::::a    a:::::a  n::::n    n::::n 
                      m::::m   m::::m   m::::ma:::::aaaa::::::a  n::::n    n::::n 
                      m::::m   m::::m   m::::m a::::::::::aa:::a n::::n    n::::n 
                      mmmmmm   mmmmmm   mmmmmm  aaaaaaaaaa  aaaa nnnnnn    nnnnnn 
               								                                     
               								                                     
                                                    Now attempting installation...
                                                                                  
   Looking for a previous installation of SDKMAN...
   SDKMAN found.
   
   ======================================================================================================
    You already have SDKMAN installed.
    SDKMAN was found at:
   
       /home/marcob/.sdkman
   
    Please consider running the following if you need to upgrade.
   
       $ sdk selfupdate force
   
   ======================================================================================================

Verifichiamo che l'installazione di GVM sia andata a buon fine[modifica]

   $ gvm help
   ==== BROADCAST =================================================================
   * 23/12/16: Kotlin 1.1-M04 released on SDKMAN! #kotlin
   * 23/12/16: Springboot 1.4.3.RELEASE released on SDKMAN! #springboot
   * 21/12/16: Grails 3.2.4 released on SDKMAN! #grailsfw
   ================================================================================
   
   Usage: sdk <command> [candidate] [version]
          sdk offline <enable|disable>
   
      commands:
          install   or i    <candidate> [version]
          uninstall or rm   <candidate> <version>
          list      or ls   [candidate]
          use       or u    <candidate> [version]
          default   or d    <candidate> [version]
          current   or c    [candidate]
          outdated  or o    [candidate]
          version   or v
          broadcast or b
          help      or h
          offline           [enable|disable]
          selfupdate        [force]
          flush             <candidates|broadcast|archives|temp>
   
      candidate  :  the SDK to install: groovy, scala, grails, gradle, kotlin, etc.
                    use list command for comprehensive list of candidates
                    eg: $ sdk list
   
      version    :  where optional, defaults to latest stable if not provided
                    eg: $ sdk install groovy
   
   
   
   ATTENTION: A new version of SDKMAN is available...
   
   The current version is 5.5.0+174, but you have 5.2.1+136.
   
   Would you like to upgrade now? (Y/n)Y
   
   Updating SDKMAN...
   ######################################################################## 100,0%
   
   
   Successfully upgraded SDKMAN!
   
   Open a new terminal to start using SDKMAN 5.5.1+179.
   
   To join our BETA channel, simply follow the instructions on:
   
      http://sdkman.io/install.html
   
   Enjoy!!!

Qui mi ha chiesto anche di aggiornare la versione precedente (che avevo installato prima di Natale) e l'ho fatto.

Usiamo gvm per installare Grails[modifica]

Continuando a seguire il tutorial di Udemy, mi fa scaricare la versione 3.2.4 di Grails:

   $ gvm install grails
   
   Downloading: grails 3.2.4
   
   In progress...
   
   ######################################################################## 100,0%
   
   Installing: grails 3.2.4
   Done installing!
   
   Do you want grails 3.2.4 to be set as default? (Y/n): Y
   
   Setting grails 3.2.4 as default.

Effettuiamo alcuni controlli[modifica]

La versione di java

   $ java -version
   java version "1.8.0_73"
   Java(TM) SE Runtime Environment (build 1.8.0_73-b02)
   Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode)

OK

La versione di Grails

   $ grails -version
   | Grails Version: 3.2.4
   | Groovy Version: 2.4.7
   | JVM Version: 1.8.0_73

OK

Adottiamo una IDE[modifica]

Nel tutorial più volte detto di Udemy, si fa riferimento ad una vecchia versione del sito di Grails, nella quale c'era un link diretto alla IDE di Groovy/Grails. Quel link non esiste più.

È successo che nel frattempo la società che sponsorizzava il progetto Groovy/Grails da marzo 2015 non lo sponsorizza più.

Maggiori dettagli su Groovy 2.4 And Grails 3.0 To Be Last Major Releases Under Pivotal Sponsorship

Per questo motivo la IDE utilizzata negli screencast di Udemy è disponibile ancora per un periodo limitato, e non si trova nel sito di Grails proprio perché Pivotal non sponsorizza più.

Devo andare allora (cercando GGTS grails su Google) nel sito di Spring, che è un progetto opensource ancora gestito da Pivotal, dove trovo la nota riportata sopra e il link all'ambiente di sviluppo GGTS (Groovy & Grails Tool Suite):

GGTS download

Ggts download.png

Installo e si crea una serie di cartelle sotto /home/marcob/linguaggi/java/grails/.

Dopodiché fornisco una scorciatoia da /usr/bin:

   marcob@jsbach:/usr/bin$ sudo ln -s /home/marcob/linguaggi/java/grails/ggts-bundle/ggts-3.6.4.RELEASE/GGTS GGTS
   [sudo] password di marcob: 

Poi apro la shell:

  $ GGTS

e parte la IDE.

CREARE UNA APPLICAZIONE con Grails[modifica]

   $ grails create-app helloworld
   Resolving dependencies...
   | Application created at /home/marcob/Documenti/workspace/java/grails/helloworld
   .
   .
   ...
   Unzipping /home/marcob/.gradle/wrapper/dists/gradle-3.0-bin/2z3tfybitalx2py5dr8rf2mti/gradle-3.0-bin.zip 
      to /home/marcob/.gradle/wrapper/dists/gradle-3.0-bin/2z3tfybitalx2py5dr8rf2mti
   Set executable permissions for: /home/marcob/.gradle/wrapper/dists/gradle-3.0-bin/2z3tfybitalx2py5dr8rf2mti/gradle-3.0/bin/gradle
   Download https://repo.grails.org/grails/core/org/grails/grails-gradle-plugin/3.2.3/grails-gradle-plugin-3.2.3.pom
   Download https://repo.grails.org/grails/core/com/bertramlabs/plugins/asset-pipeline-gradle/2.11.6/asset-pipeline-gradle-2.11.6.pom
   ...
   
   Download https://repo.grails.org/grails/core/org/objenesis/objenesis/2.1/objenesis-2.1.jar
   | Enter a command name to run. Use TAB for completion:
   grails>

Qui ora si possono lanciare comandi

   grails> create-controller hello
   | Created grails-app/controllers/helloworld/HelloController.groovy
   | Created src/test/groovy/helloworld/HelloControllerSpec.groovy
   grails> 

LANCIARE L'APPLICAZIONE da Grails[modifica]

   grails> run-app -port 9090
   

puntare il browser qui

   http://js:9090/
   
   \images\grails1.png
   \images\grails2.png

APPUNTI GRAILS[modifica]

  • Spring: controller framework
  • Hibernate: model framework (quello che si dice un ORM)
  • SiteMesh: view framework

Grails stesso è un linguaggio di script che tiene insieme questi tre pezzi; è basato su un linguaggio di scripting popolare che si chiama Groovy. Groovy è un linguaggio di scripting simile a Java che include molte caratteristiche moderne, allo stesso modo di quanto fanno Ruby On Rails e Python.

Creare una applicazione con GGTS[modifica]

Dal menu File di GGTS, selezionare New Project.

Problema: GGTS pretende un JDK e invece trova una JRE[modifica]

Si pianta e non mi fa creare una nuova applicazione Grails. Mi dice che non c'è JDK contrariamente a quanto credevo, vedi qualche riga sopra :-(

Jdk fails.png

Per vedere cos'ho installato e cosa è attualmente attivo (ad esempio qui):

  marcob@jsbach:~$ readlink -f $(which java)
  /usr/local/java/jre1.8.0_73/bin/java

Questo è un Runtime Environment. Vediamo se si può cambiare: Qui.

Dal menu di GGTS, clicco su Windows > Preferences e si apre la finestra in cui compare una sola JRE configurata. Cliccare su Add per aggiungere la SDK, comparirà questa maschera:

Choose jdk.png

cercare il path seguente:

  usr/lib/java/jdk1.8.0_25

Clicco Finish e ottengo un secondo item nella lista delle macchine virtuali:

Change jre.png

Selezionare la JDK. Se rilancio la creazione di un nuova applicazione Grails ottengo:

Errore nella creazione della miniatura: Impossibile salvare la miniatura nella destinazione

Tentando di eseguire l'applicazione di test mi va in un loop infinito di errori[modifica]

Right-click sulla cartellina Test all'interno della IDE, scelgo Run As... quindi 2. Grails command (run-app)

Nel lungo stacktrace che ne segue, ripetutamente c'è questo errore:

   dic 27, 2016 4:48:54 PM org.springsource.loaded.jvm.JVM copyMethod
   GRAVE: Problems copying method. Incompatible JVM?
   java.lang.reflect.InvocationTargetException

Googlando un po' sembra sia dovuto ad una incompatibilità di Grails con JDK 1.8.0_73: occorrerebbe downgradare (qui).