Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gradle: un moderno sistema de build para la JVM

MadridJUG
September 18, 2013

Gradle: un moderno sistema de build para la JVM

Gradle combina la potencia y flexibilidad de Ant con la gestión de dependencias y convenciones de Maven.

Hoy en dia con tal cantidad de lenguajes en la JVM, resulta un poco pesado el tener que configurar diferentes herramientas para compilar tu proyecto dependiendo de que lenguaje utilices. Gradle te puede permitir compilar tu proyecto Java, Scala, Groovy, Clojure....C++... o incluso mejor, tu proyecto Java-Scala-Groovy-Clojure.

En esta charla se mostraran las bondades de esta herramienta, mostrando varios proyectos en diferentes lenguajes de la JVM.

* Evento: https://plus.google.com/events/cjg955ic3pcbm7kmskftnkq1se8?authkey=COGRnon0nb2daA
* Vídeo: https://plus.google.com/114015589459649189517/posts/18sNcVV3jtZ

MadridJUG

September 18, 2013
Tweet

More Decks by MadridJUG

Other Decks in Programming

Transcript

  1. ¿De qué voy a hablar? • Evolución de “Build Tools”

    en java • Qué es Gradle • Qué tiene que aportar respecto a Maven • Puntos fuertes • Puntos flojos Wednesday, April 25, 12
  2. Evolución • Apache Ant • Configuración sobre convención • Basado

    en xml y en general muy verboso • No gestiona de manera integrál las dependencias (Ivy) • Lo mejor: Realizar tareas custom • Lo peor: xml y la gestión de dependencias Wednesday, April 25, 12
  3. Evolución • Apache Maven • Convención sobre configuración • Basado

    en xml menos verboso que Ant • Integra la gestión de dependencias • Lo mejor: Gestión de dependencias, y distribución de proyectos • Lo peor: xml y dificultad para tareas “custom” Wednesday, April 25, 12
  4. ¿Que és Gradle? • Herramienta de construcción de software que

    combina la flexibilidad de Ant con las convenciones de Maven Wednesday, April 25, 12
  5. ¿Que és Gradle? • Herramienta de construcción de software que

    combina la flexibilidad de Ant con las convenciones de Maven Wednesday, April 25, 12
  6. ¿Que és Gradle? • Herramienta de construcción de software que

    combina la flexibilidad de Ant con las convenciones de Maven ? Wednesday, April 25, 12
  7. ¿Qué es Gradle? •Groovy • Reducción de lineas de código

    respecto a Xml • Usas código que puedes trazar, testear... • Puedes crear tu propia dsl para tus scripts de build Wednesday, April 25, 12
  8. ¿Qué es Gradle? •Fichero de Gradle • Ant --> ant.build

    • Maven --> pom.xml • Gradle -->build.gradle Wednesday, April 25, 12
  9. ¿Qué es Gradle? •Tasks • La unidad de operación es

    la tarea (task) • Las tareas se invocan despues del comando “gradle”: • gradle build • Se pueden encadenar tantas tareas en linea de comandos como se quiera: • gradle clean compileJava Wednesday, April 25, 12
  10. ¿Qué es gradle? •Consola • Encadenar llamadas a tareas •

    Gradle daemon: mejora de rendimiento • Gradle gui • Información sobre tareas • Próximamente: consola interactiva con autocompletado Wednesday, April 25, 12
  11. Round 1 •Xml vs Código • Maven: se basa en

    xml, y siempre tienes que escribir una serie de etiquetas para realizar ciertas tareas. • Gradle: te permite hacer lo mismo con menos código. Wednesday, April 25, 12
  12. Round 2 •Convención sobre configuración • Ambos permiten tener un

    layout por defecto para proyectos Java/ Groovy/Scala • Pero Gradle te permite extender la convención con Ant, Groovy, “Tipos”,Orden por dependencia entre tareas. Wednesday, April 25, 12
  13. Round 3 •Ciclo de vida • Maven: compilado, compilado de

    tests, tests, empaquetado... • Gradle: inicialización, configuración, ejecución. (Los plugins crean sus propios ciclos de vida encadenando tasks) Wednesday, April 25, 12
  14. Round 4 •Scripting • Maven: Realizar scripting en Maven es

    un infierno, además de que la mayoría de las veces acabas embebiendo código en el propio xml. • Gradle: En Gradle, el propio script es código con lo que puedes importar plugins o clases de utilidad que ya tuvieras para realizar las tareas y ademas categorizarlas. Wednesday, April 25, 12
  15. Round 5 •Dependencias • Maven: es la referencia en la

    gestión/ distribución de dependencias. No puede agrupar dependencias. • Gradle: delega en Maven/Ivy. Puede agrupar dependencias. • Cambia la nomenclatura de ámbito (por ejemplo compile = compile + runtime) Wednesday, April 25, 12
  16. Round 6 •Soporte IDE • Maven: tiene soporte para Netbeans,

    Eclipse, Intellij • Gradle: tiene soporte para Netbeans (limitado), Eclipse (STS) e Intellij Wednesday, April 25, 12
  17. Round 7 •Multiproyecto • Maven: • Se puede declarar un

    pom.xml “padre” y luego los pom.xml de cada proyecto. Heredamos configuraciones de plugins y propiedades • Gradle: • Se separa la declaracion de hijos de las configuraciones de herencia. Decoupling. (build.gradle/settings.gradle) Wednesday, April 25, 12
  18. Resultado Gradle Maven Convencion Vs Conf Ciclo de Vida Xml

    vs Código Scripting Dependencias Multiproject IDE Wednesday, April 25, 12
  19. Por donde empezar • Página del proyecto • http://www.gradle.org •

    Wiki: • http://wiki.gradle.org/display/GRADLE/Home • Libros: • Building And Testing with Gradle (O’Reilly) • Se puede leer online a través de la página de Gradle Wednesday, April 25, 12