gradle vs maven
DESCRIPTION
Introducción de Gradle comparandolo con MavenTRANSCRIPT
![Page 1: Gradle vs Maven](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/1.jpg)
VS
Wednesday, April 25, 12
![Page 2: Gradle vs Maven](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/2.jpg)
Hola!
• Mario García
• @marioggar
• desmontandojava.blogspot.com
Wednesday, April 25, 12
![Page 3: Gradle vs Maven](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/3.jpg)
¿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](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/4.jpg)
Evolución
Wednesday, April 25, 12
![Page 5: Gradle vs Maven](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/5.jpg)
Evolución
Wednesday, April 25, 12
![Page 6: Gradle vs Maven](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/7.jpg)
Evolución
Wednesday, April 25, 12
![Page 8: Gradle vs Maven](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/9.jpg)
Evolución
Wednesday, April 25, 12
![Page 10: Gradle vs Maven](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/10.jpg)
Wednesday, April 25, 12
![Page 11: Gradle vs Maven](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/11.jpg)
¿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](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/12.jpg)
¿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](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/13.jpg)
¿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](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/14.jpg)
¿Qué es Gradle?
Wednesday, April 25, 12
![Page 15: Gradle vs Maven](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/15.jpg)
¿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](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/16.jpg)
¿Qué es Gradle?
• Fichero de Gradle
• Ant --> ant.build
• Maven --> pom.xml
• Gradle -->build.gradle
Wednesday, April 25, 12
![Page 17: Gradle vs Maven](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/17.jpg)
¿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](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/18.jpg)
¿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](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/20.jpg)
Round 1
Wednesday, April 25, 12
![Page 21: Gradle vs Maven](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/24.jpg)
Round 4
Wednesday, April 25, 12
![Page 25: Gradle vs Maven](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/27.jpg)
Round 6
Wednesday, April 25, 12
![Page 28: Gradle vs Maven](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/29.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/30.jpg)
¿Quién lo usa?
Wednesday, April 25, 12
![Page 31: Gradle vs Maven](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/31.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022082309/5492c7b8b479593d4d8b46bf/html5/thumbnails/32.jpg)
Q & A
Wednesday, April 25, 12