Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare una empresa de Scribd logo
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   Maven
                          Convencion 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

Más contenido relacionado

Gradle vs Maven

  • 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