martes, 8 de mayo de 2012

Descubriendo GRADLE



Gradle es una de estas herramientas que te da buen feeling desde que la descubres, te permite gestionar y construir proyectos de software (Java). Te ofrece la versatilidad de Ant, la rigidez de Maven, tiene muy buena documentación, y además los scripts de construcción de tu proyecto no son xml sino que son código.

Instalación

Instalar Gradle teniendo una jdk cuya versión  sea superior a 1.5 es tan sencillo como descomprimir el zip que puedes descargar de www.gradle.org, añadir GRADLE_HOME/bin a la variable de entorno PATH. Con esto sólo tienes que teclear gradle-v y comprobar que sale algo como:

------------------------------------------------------------
Gradle 1.0-rc-3
------------------------------------------------------------
Gradle build time: domingo 29 de abril de 2012 23H51' UTC
Groovy: 1.8.6
Ant: Apache Ant(TM) version 1.8.2 compiled on December 20 2010
Ivy: 2.2.0
JVM: 1.7.0_03 (Oracle Corporation 22.1-b02)
OS: Windows XP 5.1 x86


Java plugin

Una vez instalado nos centramos en crear nuestro primer proyecto, yo por mi parte he cogido un pequeño proyecto en el que demostraba como generar dos clases y ejecutar las pruebas unitarias de estas dos clases.

Como mencionaba gradle nos permite introducir código (groovy) en nuestros scripts de construcción de proyectos, podemos incluir sentencias como las siguientes para sacar por consola la configuración de gradle:

println "Code" //Código principal del proyecto
println sourceSets.main.java.srcDirs
println "Classes" //Clases generadas del proyecto principal
println sourceSets.main.output.classesDir

println "Tests" // Código de pruebas del proyecto
println sourceSets.test.output.classesDir


Usando la configuración por defecto gradle asume que la estructura del proyecto es la siguiente:

src/main/java  código fuente java
src/test/java  código fuente de las pruebas

Con lo que depositamos ahí nuestro código desarrollado anteriormente.

Gradle está construido basado en plugins, iremos viendo algunos de ellos, para este primer ejemplo veremos el plugin Java. Este plugin añade capacidades de compilación, pruebas y empaquetamiento a un proyecto.

Para declarar la utilización del plugin sólo tenemos que incluir la sentencia:

apply plugin: 'java'

Declaramos así mismo los repositorios del proyecto, en nuestro caso reutilizamos los repositorios de maven.

repositories {
    mavenCentral()
}

Añadimos las dependencias al proyecto. Como vemos hay dos grupos de dependencias, por un lado las de la tarea de compilación y por otro lado las de la tarea de pruebas unitarias.

dependencies {
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
    testCompile group: 'junit', name: 'junit', version: '4.+'
}

Podemos declarar también la generación de un archivo jar, que por defecto se genera de la siguiente forma:

[baseName]-[appendix]-[version]-[classifier].[extension]

Siendo baseName, appendix, version, classifier y extension atributos, las tareas en gradle son objetos, de la clase Jar. Igual podemos construir el fichero manifest:

jar {
    baseName= 'junitBlog'
    version = '1.0'
    manifest {
        attributes 'Implementation-Title': 'Atherindarl project', 'Implementation-Version': version
    }
}

Creo un jar llamado junitBlog-1.0.jar.

Juntando los diversos elementos en un único fichero build.gradle

apply plugin: 'java'


println "Code"
println sourceSets.main.java.srcDirs
println "Classes"
println sourceSets.main.output.classesDir
println "Tests"
println sourceSets.test.output.classesDir

jar {
    baseName= 'junitBlog'
    version = '1.0'
    manifest {
        attributes 'Implementation-Title': 'Atherindarl project', 'Implementation-Version': version
    }
}

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
    testCompile group: 'junit', name: 'junit', version: '4.+'
}

test {
    systemProperties 'property': 'value'
}



Tecleando gradle build vemos como las distintas tareas de gradle se van ejecutando.

>gradle build

Code
[E:\Gradle\junit\src\main\java]
Classes
E:\Gradle\junit\build\classes\main
Tests
E:\Gradle\junit\build\classes\test
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar
:assemble
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build

BUILD SUCCESSFUL

Total time: 9.484 secs


Gradle nos ofrece la estructura de tareas básicas que puede tener un proyecto: compilar, probar, generar jar. Podemos añadir código a nuestro build.gradle, y diversos plugins dependiendo de nuestras necesidades que nos permiten una gran flexibilidad.


No hay comentarios:

Publicar un comentario