32
VS Wednesday, April 25, 12

Gradle vs Maven

Embed Size (px)

DESCRIPTION

Introducción de Gradle comparandolo con Maven

Citation preview

Page 1: Gradle vs Maven

VS

Wednesday, April 25, 12

Page 2: Gradle vs Maven

Hola!

• Mario García

• @marioggar

• desmontandojava.blogspot.com

Wednesday, April 25, 12

Page 3: Gradle vs Maven

¿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

Page 4: Gradle vs Maven

Evolución

Wednesday, April 25, 12

Page 5: Gradle vs Maven

Evolución

Wednesday, April 25, 12

Page 6: Gradle vs Maven

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

Page 7: Gradle vs Maven

Evolución

Wednesday, April 25, 12

Page 8: Gradle vs Maven

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

Page 9: Gradle vs Maven

Evolución

Wednesday, April 25, 12

Page 10: Gradle vs Maven

Wednesday, April 25, 12

Page 11: Gradle vs Maven

¿Que és Gradle?

• Herramienta de construcción de software que combina la flexibilidad de Ant con las convenciones de Maven

Wednesday, April 25, 12

Page 12: Gradle vs Maven

¿Que és Gradle?

• Herramienta de construcción de software que combina la flexibilidad de Ant con las convenciones de Maven

Wednesday, April 25, 12

Page 13: Gradle vs Maven

¿Que és Gradle?

• Herramienta de construcción de software que combina la flexibilidad de Ant con las convenciones de Maven

?Wednesday, April 25, 12

Page 14: Gradle vs Maven

¿Qué es Gradle?

Wednesday, April 25, 12

Page 15: Gradle vs Maven

¿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

Page 16: Gradle vs Maven

¿Qué es Gradle?

• Fichero de Gradle

• Ant --> ant.build

• Maven --> pom.xml

• Gradle -->build.gradle

Wednesday, April 25, 12

Page 17: Gradle vs Maven

¿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

Page 18: Gradle vs Maven

¿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

Page 19: Gradle vs Maven

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

Page 20: Gradle vs Maven

Round 1

Wednesday, April 25, 12

Page 21: Gradle vs Maven

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

Page 22: Gradle vs Maven

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

Page 23: Gradle vs Maven

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

Page 24: Gradle vs Maven

Round 4

Wednesday, April 25, 12

Page 25: Gradle vs Maven

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

Page 26: Gradle vs Maven

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

Page 27: Gradle vs Maven

Round 6

Wednesday, April 25, 12

Page 28: Gradle vs Maven

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

Page 29: Gradle vs Maven

Resultado

Gradle MavenConvencion Vs Conf

Ciclo de Vida

Xml vs Código

Scripting

Dependencias

Multiproject

IDE

Wednesday, April 25, 12

Page 30: Gradle vs Maven

¿Quién lo usa?

Wednesday, April 25, 12

Page 31: Gradle vs Maven

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

Page 32: Gradle vs Maven

Q & A

Wednesday, April 25, 12