lunes, 19 de octubre de 2015

Vaadin, Spring Boot, GORM y GRADLE para soluciones interesantes

Hoy día podemos usar GRAILS desde cualquier sistema de automático de construcción (GRADLE, MAVEN, IVY), pero aveces queremos realizar pequeños proyectos con solo ciertas herramientas y con un desarrollo web rápido debido al entorno y necesidad generados por el proyecto. Por que perder a un gran ORM como GORM?, Tengo que usar GRAILS para usar a GORM?

Para los amantes de Micro Frameworks Spring Boot es una gran opción ante otros (Spark Java, NodeJS) si lo que se quiere es mantener un lenguaje alto con altas herramientas para soluciones sencillas, pero que necesitan un poco (Incluso son viables si el proyecto es de tamaño medio) del elemento de programación.

Para el ejemplo usé el Plugin de Grails para las Grid y Tables Lazy que anteriormente mostré como usar y crear para enseñar que sí funciona! :V

Usando nuestro IDE favorito creamos un proyecto GRADLE limpio y procedemos a adicionar los siguientes repositorios a nuestra configuración.
  • maven { url "https://repo.spring.io/libs-release" } // Spring repo
  • maven { url "http://maven.vaadin.com/vaadin-addons" } // Vaadin Add-ON
  • maven { url "http://dl.bintray.com/johndevs/maven" } // Vaadin on Gradle
Nota: Se deben poner en

buildscript {
    repositories {
        // Aqui
    }
}
repositories {
    // Aqui
}

Una vez con todos los repositorios están en su lugar procedemos a usar los componentes para crear nuestro primer proyecto.

Declaramos las siguientes variables para controlar las versiones (intentamos usar las últimas, no confundan las de GORM [4.0.1.RELEASE que es vieja]):

def vaadinVersion = '7.5.7'
def vaadinSpringVersion = "1.0.0"
def springBootVersion = "1.2.7.RELEASE"
def gormGrailsVersion = "1.1.0.RELEASE"

Luego activamos los plugins necesarios:

apply plugin: 'groovy'
apply plugin: 'java'
apply plugin: 'spring-boot'
apply plugin: 'war'
apply plugin: fi.jasoft.plugin.GradleVaadinGroovyPlugin

Adicionar al ClassPath lo siguiente para configurar el proyecto.

classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.7.RELEASE")
classpath "fi.jasoft.plugin:gradle-vaadin-plugin:0.10.2"

Adicionamos al final lo siguiente para determinar la versión de VAADIN y evitar problemas con Hibernate con una librería que VAADIN usa en una versión diferente.

jar {
    from sourceSets.main.allJava
}

configurations {
    //noinspection GroovyAssignabilityCheck
    'vaadin-client' {
        resolutionStrategy.force "javax.validation:validation-api:1.0.0.GA"
        exclude module: 'spring-boot-starter-web'
        exclude module: 'spring-boot-vaadin'
    }
}

vaadin {
    //noinspection GroovyAssignabilityCheck
    version "$vaadinVersion"
    widgetset 'AppWidgetSet'
}

Por último adicionamos las librerías a usar.

    compile 'org.codehaus.groovy:groovy-all:2.4.5'

    // Activo a Spring Boot
    compile "org.springframework.boot:spring-boot-starter:$springBootVersion"
    // Con esto activo el web, pero es posible compilar el JAR.
    compile "org.springframework.boot:spring-boot-starter-web:$springBootVersion"
    compile "org.springframework.boot:spring-boot-parent:$springBootVersion"
    providedRuntime "org.springframework.boot:spring-boot-starter-tomcat:$springBootVersion"

    // Activo a GORM
    compile("org.grails:gorm-hibernate4-spring-boot:$gormGrailsVersion") {
        exclude module: 'groovy-all'
    }
    // Permite que GORM y Vaadin Existan juntos
    compile 'javax.validation:validation-api:1.0.0.GA'
    // Permite el uso de la DB y es obligatorio para que funcione la DB con o sin GORM
    compile 'commons-dbcp:commons-dbcp:1.4'

    // Activo el vaadin Official
    compile "com.vaadin:vaadin-spring:$vaadinSpringVersion"
    compile "com.vaadin:vaadin-spring-boot:$vaadinSpringVersion"
    compile "com.vaadin:vaadin-spring-boot-starter:$vaadinSpringVersion"

    // DB Driver
    compile 'com.h2database:h2:1.4.190'

    // Vaadin Add-On
    compile("org.vaadin.addons.lazyquerycontainer:vaadin-lazyquerycontainer:7.4.0.1") {
        // Evita que me descargue dependencias no necesarias para mi caso.
        // Trae consigo una versión de VAADIN vieja.
        transitive = false
    }

    testCompile group: 'junit', name: 'junit', version: '4.12'

Una vez completado esto podemos refrescar el GRADLE y esperamos que las dependencias descarguen.

Ya con todo esto incluido en nuestro proyecto podemos crear nuestras primeras UI con vaadin, al igual que crear nuestros servicios, domains y utilerías.

Nota:

  • Usar un installApp permite correr la aplicación sin necesidad de un server, puesto usa el mismo tomcat que se especificó. Esto nos permite mostrar la APP a clientes sin necesidad de tener una PC configurada.


Todo esto podrán verlo directamente en el código fuente anexo.

Más información aquí
Example build.gradle
Source GIT Example TestGrailsVaadinSpringBoot

No hay comentarios.:

Publicar un comentario