El documento presenta una introducción a Gradle, una herramienta de construcción de software para Java. Explica que Gradle combina la flexibilidad de Ant con las convenciones de Maven, y que utiliza Groovy en lugar de XML. También compara Gradle con Maven y Ant en áreas como la configuración, el ciclo de vida, el scripting, las dependencias y el soporte multi-proyecto. Finalmente, proporciona consejos sobre cómo comenzar a usar Gradle.
2. Hola!
• Mario García
• @marioggar
• desmontandojava.blogspot.com
Wednesday, April 25, 12
3. ¿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
6. 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
8. 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
11. ¿Que és Gradle?
• Herramienta de construcción de software
que combina la flexibilidad de Ant con las
convenciones de Maven
Wednesday, April 25, 12
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
13. ¿Que és Gradle?
• Herramienta de construcción de software
que combina la flexibilidad de Ant con las
convenciones de Maven
?
Wednesday, April 25, 12
15. ¿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
16. ¿Qué es Gradle?
• Fichero de Gradle
• Ant --> ant.build
• Maven --> pom.xml
• Gradle -->build.gradle
Wednesday, April 25, 12
17. ¿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
18. ¿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
19. 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
21. 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
22. 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
23. 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
25. 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
26. 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
28. 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
29. Resultado
Gradle Maven
Convencion Vs Conf
Ciclo de Vida
Xml vs Código
Scripting
Dependencias
Multiproject
IDE
Wednesday, April 25, 12
31. 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