Gradle vs Maven

Preview:

DESCRIPTION

Introducción de Gradle comparandolo con Maven

Citation preview

VS

Wednesday, April 25, 12

Hola!

• Mario García

• @marioggar

• desmontandojava.blogspot.com

Wednesday, April 25, 12

¿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

Evolución

Wednesday, April 25, 12

Evolución

Wednesday, April 25, 12

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

Evolución

Wednesday, April 25, 12

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

Evolución

Wednesday, April 25, 12

Wednesday, April 25, 12

¿Que és Gradle?

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

Wednesday, April 25, 12

¿Que és Gradle?

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

Wednesday, April 25, 12

¿Que és Gradle?

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

?Wednesday, April 25, 12

¿Qué es Gradle?

Wednesday, April 25, 12

¿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

¿Qué es Gradle?

• Fichero de Gradle

• Ant --> ant.build

• Maven --> pom.xml

• Gradle -->build.gradle

Wednesday, April 25, 12

¿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

¿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

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

Round 1

Wednesday, April 25, 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

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

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

Round 4

Wednesday, April 25, 12

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

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

Round 6

Wednesday, April 25, 12

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

Resultado

Gradle MavenConvencion Vs Conf

Ciclo de Vida

Xml vs Código

Scripting

Dependencias

Multiproject

IDE

Wednesday, April 25, 12

¿Quién lo usa?

Wednesday, April 25, 12

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

Q & A

Wednesday, April 25, 12

Recommended