Nuestra primera aplicación Grails 1.3.7

Hola,

ayer empezamos configurando nuestro entorno de ejecución de Grails y prometí seguir con estas entradas, pues ahora toca ponerse a con crear nuestro primer proyecto. Aviso que todas estas entradas las voy a realizar en Linux, pero en teoría todos los comando son los mismos.

Empecemos creando el proyecto, lo voy a llamar Facturas, y lo llamo así porque intentaré realizar una aplicación de gestión de facturas y comencemos.

Creado el proyecto.

El comando para esto es:

grails create-app Facturas

La salida de esta ejecución es:

 davioth@Akane:~/workspace-indigo/GIT$ grails create-app Facturas
 Welcome to Grails 1.3.7 - http://grails.org/
 Licensed under Apache Standard License 2.0
 Grails home is set to: /home/davioth/Sun/grails-1.3.7

Base Directory: /home/davioth/workspace-indigo/GIT
 Resolving dependencies...
 Dependencies resolved in 1637ms.
 Running script /home/davioth/Sun/grails-1.3.7/scripts/CreateApp_.groovy
 Environment set to development
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/src
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/src/java
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/src/groovy
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/grails-app
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/grails-app/controllers
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/grails-app/services
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/grails-app/domain
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/grails-app/taglib
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/grails-app/utils
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/grails-app/views
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/grails-app/views/layouts
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/grails-app/i18n
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/grails-app/conf
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/test
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/test/unit
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/test/integration
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/scripts
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/web-app
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/web-app/js
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/web-app/css
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/web-app/images
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/web-app/META-INF
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/lib
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/grails-app/conf/spring
 [mkdir] Created dir: /home/davioth/workspace-indigo/GIT/Facturas/grails-app/conf/hibernate
 [propertyfile] Creating new property file: /home/davioth/workspace-indigo/GIT/Facturas/application.properties
 [copy] Copying 1 resource to /home/davioth/workspace-indigo/GIT/Facturas
 [unjar] Expanding: /home/davioth/workspace-indigo/GIT/Facturas/grails-shared-files.jar into /home/davioth/workspace-indigo/GIT/Facturas
 [delete] Deleting: /home/davioth/workspace-indigo/GIT/Facturas/grails-shared-files.jar
 [copy] Copying 1 resource to /home/davioth/workspace-indigo/GIT/Facturas
 [unjar] Expanding: /home/davioth/workspace-indigo/GIT/Facturas/grails-app-files.jar into /home/davioth/workspace-indigo/GIT/Facturas
 [delete] Deleting: /home/davioth/workspace-indigo/GIT/Facturas/grails-app-files.jar
 [copy] Copying 1 resource to /home/davioth/.grails/1.3.7/projects/GIT/integration-files
 [unjar] Expanding: /home/davioth/.grails/1.3.7/projects/GIT/integration-files/grails-integration-files.jar into /home/davioth/.grails/1.3.7/projects/GIT/integration-files
 [delete] Deleting: /home/davioth/.grails/1.3.7/projects/GIT/integration-files/grails-integration-files.jar
 [copy] Copying 3 files to /home/davioth/workspace-indigo/GIT/Facturas
 Created Eclipse project files.
 Installing zip /home/davioth/Sun/grails-1.3.7/plugins/grails-hibernate-1.3.7.zip... ...
 [mkdir] Created dir: /home/davioth/.grails/1.3.7/projects/Facturas/plugins/hibernate-1.3.7
 [unzip] Expanding: /home/davioth/Sun/grails-1.3.7/plugins/grails-hibernate-1.3.7.zip into /home/davioth/.grails/1.3.7/projects/Facturas/plugins/hibernate-1.3.7
 Installed plugin hibernate-1.3.7 to location /home/davioth/.grails/1.3.7/projects/Facturas/plugins/hibernate-1.3.7. ...
 Resolving plugin JAR dependencies ...
 Executing hibernate-1.3.7 plugin post-install script ...
 Plugin hibernate-1.3.7 installed
 [delete] Deleting directory /home/davioth/.grails/1.3.7/projects/GIT/resources
 Installing zip /home/davioth/Sun/grails-1.3.7/plugins/grails-tomcat-1.3.7.zip... ...
 [mkdir] Created dir: /home/davioth/.grails/1.3.7/projects/Facturas/plugins/tomcat-1.3.7
 [unzip] Expanding: /home/davioth/Sun/grails-1.3.7/plugins/grails-tomcat-1.3.7.zip into /home/davioth/.grails/1.3.7/projects/Facturas/plugins/tomcat-1.3.7
 Installed plugin tomcat-1.3.7 to location /home/davioth/.grails/1.3.7/projects/Facturas/plugins/tomcat-1.3.7. ...
 Executing tomcat-1.3.7 plugin post-install script ...
 Plugin tomcat-1.3.7 installed
 Plugin provides the following new scripts:
 ------------------------------------------
 grails tomcat
 Created Grails Application at /home/davioth/workspace-indigo/GIT/Facturas
 

De esta manera se ha creado la estructura básica de un proyecto Grails.

Estructura


A continuación explico más o menos que es cada cosa.

Grails-app

├── grails-app
│   ├── conf
│   ├── controllers
│   ├── domain
│   ├── i18n
│   ├── services
│   ├── taglib
│   ├── utils
│   └── views

En esta carpeta lo que tenemos son básicamente las partes que debemos tocar para tener nuestra aplicación como queremos, así por ejemplo en conf  tenemos todos los ficheros de configuración de nuestra aplicación. En controller tendríamos los controladores de nuestra aplicación donde podremos configurar las acciones, en domain se definen todo nuestros objetos de dominios en los que iremos definiendo nuestra base de datos, luego en services , iremos definiendo acciones que por su naturaleza no caben en los controller y en el view. Iremos definiendo las páginas que iremos mostrando.

Luego en i18n  es donde se establecen los mensajes según los códigos locales, taglib es sería donde estableceremos nuestros propios tags para usarlos en las vistas y finalmente en utils tendremos las clases de codec por ejemplo.

Parte de Test

├── test
│   ├── integration
│   └── unit

En esta parte se encuentran todos los test de la aplicación, que yo recomiendo que se usen aplicando si se puede la filosofía TDD , donde tenemos en integration  los test de integración y en unit  los test unitarios de la aplicación.

Otros componentes

├── lib
├── scripts
├── src
│   ├── groovy
│   └── java

En este apartado os hablo de las partes más difíciles de clasificar, así por ejemplo en lib  se colocan las librerías del proyecto, scripts  es donde se encuentras los scripts GANT,  luego en src  tenemos las clases que no sean servicios un buen ejemplo sería alguna implementación de una interfaz que por ejemplo se use para configurar algo.

Ejecutando por primera vez

Con el siguiente comando se ejecuta la aplicación.

grails run-app

Primera Ejecución de la aplicación.

como se puede ver es la página por defecto y no tiene nada más.

Cómo estoy cansado ya de escribir dejaré para mañana o más tarde seguir con este ejercicio…. de no sé como llamarlo. De todos modos el código de la aplicación lo estoy subiendo a GitHub.

Ya hasta mañana.
Esta entrada fue publicada en Curso Grails, Grails, Linux y etiquetada . Guarda el enlace permanente.

4 respuestas a Nuestra primera aplicación Grails 1.3.7

  1. Cortocircuito dijo:

    Me hubiese encantado que hubieses seguido con el curso.

    Saludos.

    • davioth dijo:

      Gracias, a mi también pero no he podido por razones laborales, espero poder este verano poder continuarlo o hacer uno sobre la versión 2.0.3.

      De todos modos si tiene dudas pregunte, que me he pasado casi 4 años trabajando con Grails.

  2. Cortocircuito dijo:

    Me encantaría que me suministraras los recursos Grails que te fueron más utiles en tus inicios.

    Me he visto diversa documentación de Grails pero sigo o por lo menos mi impresión que no termino de arrancar.

    Documentación que tengo en mi poder 😀

    Español
    Manual.de.Desarrollo.Web.con.Grails.v1.1.0 (Leído)
    Manual_Practico_Capacitacion_Grails (Leído)

    Ingles:
    Apress.-.Beginning.Groovy.and.Grails.From.Novice.to.Professional.Jun.2008
    Apress.-.Grails.Persistence.with.GORM.and.GSQL.Apr.2009
    Apress.-.Groovy.and.Grails.Recipes.Dec.2008
    InfoQ.-.Getting.Started.with.Grails.Feb.2010
    Manning.-.Grails.in.Action.Jun.2009
    Packtpub.-.Grails.1.1.Web.Application.Development.May.2009
    Pragmatic.Bookshelf.-.Grails.A.Quick.Start.Guide.Edition.Oct.2009 (Leído)

    Cual de los que me queda por leer debería leerme, después para saber aplicar TDD y Selenium que me recomiendas.

    Siento que no soy capaz de generar gsp con una apariencia similar utilizando Sitemesh, (tengo conocimientos de css básicos). Me he leído también todos los manuales de está página.

    Necesito una ayuda, como podría ir avanzado más rápido estoy tratando de hacer el PFC en grails y me siento que voy muy lento.

    Saludos.

    • davioth dijo:

      Hola,
      la verdad es que para empezar a utilizar Grails sólo use la documentación oficial y pregunté mucho a mis compañeros de trabajo. Y cunado teníamos una duda la resolvíamos entre todos. Pero mi consejo para empezar, es eso, empezar plantea te algo que hacer y empieza.
      De todos modos si quieres pregunta por aquí o https://groups.google.com/group/grailsencastellano?hl=es&pli=1 y yo enteré ayudarte. Y en la lista encontrarás más gente, que saben mucho más que yo.

      Y en cuanto al PFC, no te agobies todos en algún momento no hemos atascado con el PFC.

      Suerte.

      P.D: El otro comentario no lo he aprobado porque tengo dudas sobre la licencia y no quiero meterme en líos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *