Gradle vs Maven
description
Transcript of Gradle vs Maven
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