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

La actualidad más candente

Agile Testing Strategy
Agile Testing StrategyAgile Testing Strategy
Agile Testing Strategytharindakasun
 
"Experiences Of Test Automation At Spotify" with Kristian Karl
"Experiences Of Test Automation At Spotify" with Kristian Karl"Experiences Of Test Automation At Spotify" with Kristian Karl
"Experiences Of Test Automation At Spotify" with Kristian Karl
TEST Huddle
 
BDD presentation
BDD presentationBDD presentation
BDD presentation
temebele
 
Automation test framework with cucumber – BDD
Automation test framework with cucumber – BDDAutomation test framework with cucumber – BDD
Automation test framework with cucumber – BDD
123abcda
 
The Paved Road at Netflix
The Paved Road at NetflixThe Paved Road at Netflix
The Paved Road at Netflix
Dianne Marsh
 
Testing RESTful Webservices using the REST-assured framework
Testing RESTful Webservices using the REST-assured frameworkTesting RESTful Webservices using the REST-assured framework
Testing RESTful Webservices using the REST-assured framework
Micha Kops
 
Space Camp :: API Lifecycle, Part I: Build and Test an API
Space Camp :: API Lifecycle, Part I: Build and Test an APISpace Camp :: API Lifecycle, Part I: Build and Test an API
Space Camp :: API Lifecycle, Part I: Build and Test an API
Postman
 
Software quality assurance
Software quality assuranceSoftware quality assurance
Software quality assuranceRajeev Sharan
 
Agile QA presentation
Agile QA presentationAgile QA presentation
Agile QA presentation
Carl Bruiners
 
Agile Testing Best Practices
Agile Testing Best PracticesAgile Testing Best Practices
Agile Testing Best Practices
Stephen Ritchie
 
The Engineer's Playbook: Starting a New Role
The Engineer's Playbook: Starting a New RoleThe Engineer's Playbook: Starting a New Role
The Engineer's Playbook: Starting a New Role
Cameron Presley
 
POSTMAN.pptx
POSTMAN.pptxPOSTMAN.pptx
POSTMAN.pptx
RamaKrishna970827
 
Rest assured
Rest assuredRest assured
Rest assured
Varun Deshpande
 
Gestion de pruebas y migraciones (0)
Gestion de pruebas y  migraciones (0)Gestion de pruebas y  migraciones (0)
Gestion de pruebas y migraciones (0)
León Leon
 
Introduction to Agile Testing
Introduction to Agile TestingIntroduction to Agile Testing
Introduction to Agile Testing
Raymond Adrian (Rad) Butalid
 
Software Testing
Software TestingSoftware Testing
Software Testing
Benoy Ramachandran
 
TMMi Implementation Guideline
TMMi Implementation GuidelineTMMi Implementation Guideline
TMMi Implementation Guideline
STAG Software Private Limited
 
Selenium-4-and-appium-2
Selenium-4-and-appium-2Selenium-4-and-appium-2
Selenium-4-and-appium-2
Manoj Kumar Kumar
 
Tests de performances
Tests de performancesTests de performances
Tests de performances
Damien Raude-Morvan
 
AWS Innovate: Mobile App testing with AWS Device Farm- Kevin Kim
AWS Innovate: Mobile App testing with AWS Device Farm- Kevin KimAWS Innovate: Mobile App testing with AWS Device Farm- Kevin Kim
AWS Innovate: Mobile App testing with AWS Device Farm- Kevin Kim
Amazon Web Services Korea
 

La actualidad más candente (20)

Agile Testing Strategy
Agile Testing StrategyAgile Testing Strategy
Agile Testing Strategy
 
"Experiences Of Test Automation At Spotify" with Kristian Karl
"Experiences Of Test Automation At Spotify" with Kristian Karl"Experiences Of Test Automation At Spotify" with Kristian Karl
"Experiences Of Test Automation At Spotify" with Kristian Karl
 
BDD presentation
BDD presentationBDD presentation
BDD presentation
 
Automation test framework with cucumber – BDD
Automation test framework with cucumber – BDDAutomation test framework with cucumber – BDD
Automation test framework with cucumber – BDD
 
The Paved Road at Netflix
The Paved Road at NetflixThe Paved Road at Netflix
The Paved Road at Netflix
 
Testing RESTful Webservices using the REST-assured framework
Testing RESTful Webservices using the REST-assured frameworkTesting RESTful Webservices using the REST-assured framework
Testing RESTful Webservices using the REST-assured framework
 
Space Camp :: API Lifecycle, Part I: Build and Test an API
Space Camp :: API Lifecycle, Part I: Build and Test an APISpace Camp :: API Lifecycle, Part I: Build and Test an API
Space Camp :: API Lifecycle, Part I: Build and Test an API
 
Software quality assurance
Software quality assuranceSoftware quality assurance
Software quality assurance
 
Agile QA presentation
Agile QA presentationAgile QA presentation
Agile QA presentation
 
Agile Testing Best Practices
Agile Testing Best PracticesAgile Testing Best Practices
Agile Testing Best Practices
 
The Engineer's Playbook: Starting a New Role
The Engineer's Playbook: Starting a New RoleThe Engineer's Playbook: Starting a New Role
The Engineer's Playbook: Starting a New Role
 
POSTMAN.pptx
POSTMAN.pptxPOSTMAN.pptx
POSTMAN.pptx
 
Rest assured
Rest assuredRest assured
Rest assured
 
Gestion de pruebas y migraciones (0)
Gestion de pruebas y  migraciones (0)Gestion de pruebas y  migraciones (0)
Gestion de pruebas y migraciones (0)
 
Introduction to Agile Testing
Introduction to Agile TestingIntroduction to Agile Testing
Introduction to Agile Testing
 
Software Testing
Software TestingSoftware Testing
Software Testing
 
TMMi Implementation Guideline
TMMi Implementation GuidelineTMMi Implementation Guideline
TMMi Implementation Guideline
 
Selenium-4-and-appium-2
Selenium-4-and-appium-2Selenium-4-and-appium-2
Selenium-4-and-appium-2
 
Tests de performances
Tests de performancesTests de performances
Tests de performances
 
AWS Innovate: Mobile App testing with AWS Device Farm- Kevin Kim
AWS Innovate: Mobile App testing with AWS Device Farm- Kevin KimAWS Innovate: Mobile App testing with AWS Device Farm- Kevin Kim
AWS Innovate: Mobile App testing with AWS Device Farm- Kevin Kim
 

Destacado

Ecosistemas de Desarrollo Software - Automatización
Ecosistemas de Desarrollo Software - AutomatizaciónEcosistemas de Desarrollo Software - Automatización
Ecosistemas de Desarrollo Software - AutomatizaciónManuel Jesús Recena Soto
 
Regla del Boy Scout y la Oxidación del Software
Regla del Boy Scout y la Oxidación del SoftwareRegla del Boy Scout y la Oxidación del Software
Regla del Boy Scout y la Oxidación del Software
Alejandro Pérez García
 
JAX-RS 2.0: RESTful Java on Steroids, by Aron Gupta
JAX-RS 2.0: RESTful Java on Steroids, by Aron GuptaJAX-RS 2.0: RESTful Java on Steroids, by Aron Gupta
JAX-RS 2.0: RESTful Java on Steroids, by Aron Gupta
Codemotion
 
JAX-RS 2.0 and OData
JAX-RS 2.0 and ODataJAX-RS 2.0 and OData
JAX-RS 2.0 and OData
Anil Allewar
 
Java colombo-deep-dive-into-jax-rs
Java colombo-deep-dive-into-jax-rsJava colombo-deep-dive-into-jax-rs
Java colombo-deep-dive-into-jax-rs
Sagara Gunathunga
 
Maven
Maven Maven
Maven
Khan625
 
JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?
Arun Gupta
 
Java desde cero maven
Java desde cero mavenJava desde cero maven
Java desde cero maven
www.mentoringit.com.mx
 
An introduction to Maven
An introduction to MavenAn introduction to Maven
An introduction to Maven
Joao Pereira
 
Demystifying Maven
Demystifying MavenDemystifying Maven
Demystifying Maven
Mike Desjardins
 
La guía definitiva para buscar en google
La guía definitiva para buscar en googleLa guía definitiva para buscar en google
La guía definitiva para buscar en google
Peio Archanco Ardanaz
 
Breve introducción a Apache Ant
Breve introducción a Apache AntBreve introducción a Apache Ant
Breve introducción a Apache Ant
Iker Canarias
 
Death by PowerPoint
Death by PowerPointDeath by PowerPoint
Death by PowerPoint
Alexei Kapterev
 

Destacado (17)

Gradle como alternativa a maven
Gradle como alternativa a mavenGradle como alternativa a maven
Gradle como alternativa a maven
 
Ecosistemas de Desarrollo Software - Automatización
Ecosistemas de Desarrollo Software - AutomatizaciónEcosistemas de Desarrollo Software - Automatización
Ecosistemas de Desarrollo Software - Automatización
 
Regla del Boy Scout y la Oxidación del Software
Regla del Boy Scout y la Oxidación del SoftwareRegla del Boy Scout y la Oxidación del Software
Regla del Boy Scout y la Oxidación del Software
 
JAX-RS 2.0: RESTful Java on Steroids, by Aron Gupta
JAX-RS 2.0: RESTful Java on Steroids, by Aron GuptaJAX-RS 2.0: RESTful Java on Steroids, by Aron Gupta
JAX-RS 2.0: RESTful Java on Steroids, by Aron Gupta
 
JAX-RS 2.0 and OData
JAX-RS 2.0 and ODataJAX-RS 2.0 and OData
JAX-RS 2.0 and OData
 
Java colombo-deep-dive-into-jax-rs
Java colombo-deep-dive-into-jax-rsJava colombo-deep-dive-into-jax-rs
Java colombo-deep-dive-into-jax-rs
 
Maven
MavenMaven
Maven
 
Maven
Maven Maven
Maven
 
Maven (EN ESPANOL)
Maven (EN ESPANOL)Maven (EN ESPANOL)
Maven (EN ESPANOL)
 
Maven Overview
Maven OverviewMaven Overview
Maven Overview
 
JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?
 
Java desde cero maven
Java desde cero mavenJava desde cero maven
Java desde cero maven
 
An introduction to Maven
An introduction to MavenAn introduction to Maven
An introduction to Maven
 
Demystifying Maven
Demystifying MavenDemystifying Maven
Demystifying Maven
 
La guía definitiva para buscar en google
La guía definitiva para buscar en googleLa guía definitiva para buscar en google
La guía definitiva para buscar en google
 
Breve introducción a Apache Ant
Breve introducción a Apache AntBreve introducción a Apache Ant
Breve introducción a Apache Ant
 
Death by PowerPoint
Death by PowerPointDeath by PowerPoint
Death by PowerPoint
 

Similar a Gradle vs Maven

Testing en proyectos Grails del día a día. Greach 2013
Testing en proyectos Grails del día a día. Greach 2013Testing en proyectos Grails del día a día. Greach 2013
Testing en proyectos Grails del día a día. Greach 2013
Dani Latorre
 
Principios de diseño de código orientado a objetos SOLID
Principios de diseño de código orientado a objetos SOLIDPrincipios de diseño de código orientado a objetos SOLID
Principios de diseño de código orientado a objetos SOLID
Luis Alexander Aldazabal Gil
 
Android Studio - Ventajas y desventajas
Android Studio - Ventajas y desventajasAndroid Studio - Ventajas y desventajas
Android Studio - Ventajas y desventajasJorge Martín Espinosa
 
De principiante a rockstar en Drupal: "Hablemos de buenas prácticas"
De principiante a rockstar en Drupal: "Hablemos de buenas prácticas"De principiante a rockstar en Drupal: "Hablemos de buenas prácticas"
De principiante a rockstar en Drupal: "Hablemos de buenas prácticas"
Aldibier Morales
 
Drupal theming
Drupal  themingDrupal  theming
Drupal theming
Yuri Ever
 
Day01
Day01Day01
Day01
peterpunk
 
Que hemos aprendido en 5 anos de devops version agile peru
Que hemos aprendido en 5 anos de devops   version agile peruQue hemos aprendido en 5 anos de devops   version agile peru
Que hemos aprendido en 5 anos de devops version agile peru
Edson Chávez Montaño
 
JAVA3.0
JAVA3.0JAVA3.0
JAVA3.0
josemanuel2
 
09. Java desde Cero autor UNAM_1.111.pdf
09. Java desde Cero autor UNAM_1.111.pdf09. Java desde Cero autor UNAM_1.111.pdf
09. Java desde Cero autor UNAM_1.111.pdf
Irene619127
 
¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?
Socialmetrix
 
XP_PairProgramming_y_TDD
XP_PairProgramming_y_TDDXP_PairProgramming_y_TDD
XP_PairProgramming_y_TDDSantiago Blanco
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
jose diaz
 
BDD & Cucumber
BDD & CucumberBDD & Cucumber
BDD & Cucumber
Enrique Sánchez-Bayuela
 
Java desde Cero.pdf
Java desde Cero.pdfJava desde Cero.pdf
Java desde Cero.pdf
Jairo Sandoval H
 
Introducción a la Tecnología Orientada a Objetos
Introducción a la Tecnología Orientada a ObjetosIntroducción a la Tecnología Orientada a Objetos
Introducción a la Tecnología Orientada a Objetos
edwinlemmon
 
Automatizacion de proyectos con gradle
Automatizacion de proyectos con gradleAutomatizacion de proyectos con gradle
Automatizacion de proyectos con gradle
Edson Chávez Montaño
 
TDD y Python
TDD y PythonTDD y Python
TDD y Python
Javier_J
 

Similar a Gradle vs Maven (20)

Testing en proyectos Grails del día a día. Greach 2013
Testing en proyectos Grails del día a día. Greach 2013Testing en proyectos Grails del día a día. Greach 2013
Testing en proyectos Grails del día a día. Greach 2013
 
Principios de diseño de código orientado a objetos SOLID
Principios de diseño de código orientado a objetos SOLIDPrincipios de diseño de código orientado a objetos SOLID
Principios de diseño de código orientado a objetos SOLID
 
Android Studio - Ventajas y desventajas
Android Studio - Ventajas y desventajasAndroid Studio - Ventajas y desventajas
Android Studio - Ventajas y desventajas
 
De principiante a rockstar en Drupal: "Hablemos de buenas prácticas"
De principiante a rockstar en Drupal: "Hablemos de buenas prácticas"De principiante a rockstar en Drupal: "Hablemos de buenas prácticas"
De principiante a rockstar en Drupal: "Hablemos de buenas prácticas"
 
Drupal theming
Drupal  themingDrupal  theming
Drupal theming
 
Creando rascacielos con tdd
Creando rascacielos con tddCreando rascacielos con tdd
Creando rascacielos con tdd
 
Day01
Day01Day01
Day01
 
Que hemos aprendido en 5 anos de devops version agile peru
Que hemos aprendido en 5 anos de devops   version agile peruQue hemos aprendido en 5 anos de devops   version agile peru
Que hemos aprendido en 5 anos de devops version agile peru
 
JAVA3.0
JAVA3.0JAVA3.0
JAVA3.0
 
09. Java desde Cero autor UNAM_1.111.pdf
09. Java desde Cero autor UNAM_1.111.pdf09. Java desde Cero autor UNAM_1.111.pdf
09. Java desde Cero autor UNAM_1.111.pdf
 
¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?
 
XP_PairProgramming_y_TDD
XP_PairProgramming_y_TDDXP_PairProgramming_y_TDD
XP_PairProgramming_y_TDD
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
 
Java desde cero
Java desde ceroJava desde cero
Java desde cero
 
BDD & Cucumber
BDD & CucumberBDD & Cucumber
BDD & Cucumber
 
JAVA.pptx
JAVA.pptxJAVA.pptx
JAVA.pptx
 
Java desde Cero.pdf
Java desde Cero.pdfJava desde Cero.pdf
Java desde Cero.pdf
 
Introducción a la Tecnología Orientada a Objetos
Introducción a la Tecnología Orientada a ObjetosIntroducción a la Tecnología Orientada a Objetos
Introducción a la Tecnología Orientada a Objetos
 
Automatizacion de proyectos con gradle
Automatizacion de proyectos con gradleAutomatizacion de proyectos con gradle
Automatizacion de proyectos con gradle
 
TDD y Python
TDD y PythonTDD y Python
TDD y Python
 

Más de Mario García

Blockchain 101 (spanish)
Blockchain 101 (spanish)Blockchain 101 (spanish)
Blockchain 101 (spanish)
Mario García
 
Jbake workshop (Greach 2019)
Jbake workshop (Greach 2019)Jbake workshop (Greach 2019)
Jbake workshop (Greach 2019)
Mario García
 
Groovy 2.5 and 3.0 (Spanish)
Groovy 2.5 and 3.0 (Spanish)Groovy 2.5 and 3.0 (Spanish)
Groovy 2.5 and 3.0 (Spanish)
Mario García
 
GraphQL & Ratpack
GraphQL & RatpackGraphQL & Ratpack
GraphQL & Ratpack
Mario García
 
GraphQL y Groovy
GraphQL y GroovyGraphQL y Groovy
GraphQL y Groovy
Mario García
 
Calidad del codigo (MadridGUG)
Calidad del codigo (MadridGUG)Calidad del codigo (MadridGUG)
Calidad del codigo (MadridGUG)
Mario García
 
GraphQL and Groovy
GraphQL and GroovyGraphQL and Groovy
GraphQL and Groovy
Mario García
 
Macro macro, burrito burrit
Macro macro, burrito burritMacro macro, burrito burrit
Macro macro, burrito burrit
Mario García
 
Creating ASTTs The painful truth
Creating ASTTs The painful truthCreating ASTTs The painful truth
Creating ASTTs The painful truth
Mario García
 
Groovy android
Groovy androidGroovy android
Groovy android
Mario García
 
Groovy on Android
Groovy on AndroidGroovy on Android
Groovy on Android
Mario García
 
Gpars Workshop 2014
Gpars Workshop 2014Gpars Workshop 2014
Gpars Workshop 2014
Mario García
 
Functional Programming with Groovy
Functional Programming with GroovyFunctional Programming with Groovy
Functional Programming with Groovy
Mario García
 
Test Motherfucker...Test
Test Motherfucker...TestTest Motherfucker...Test
Test Motherfucker...Test
Mario García
 
Programación concurrente con GPars
Programación concurrente con GParsProgramación concurrente con GPars
Programación concurrente con GPars
Mario García
 
Greach 2011 : Creando Plugins Con Griffon
Greach 2011 : Creando Plugins Con GriffonGreach 2011 : Creando Plugins Con Griffon
Greach 2011 : Creando Plugins Con Griffon
Mario García
 

Más de Mario García (16)

Blockchain 101 (spanish)
Blockchain 101 (spanish)Blockchain 101 (spanish)
Blockchain 101 (spanish)
 
Jbake workshop (Greach 2019)
Jbake workshop (Greach 2019)Jbake workshop (Greach 2019)
Jbake workshop (Greach 2019)
 
Groovy 2.5 and 3.0 (Spanish)
Groovy 2.5 and 3.0 (Spanish)Groovy 2.5 and 3.0 (Spanish)
Groovy 2.5 and 3.0 (Spanish)
 
GraphQL & Ratpack
GraphQL & RatpackGraphQL & Ratpack
GraphQL & Ratpack
 
GraphQL y Groovy
GraphQL y GroovyGraphQL y Groovy
GraphQL y Groovy
 
Calidad del codigo (MadridGUG)
Calidad del codigo (MadridGUG)Calidad del codigo (MadridGUG)
Calidad del codigo (MadridGUG)
 
GraphQL and Groovy
GraphQL and GroovyGraphQL and Groovy
GraphQL and Groovy
 
Macro macro, burrito burrit
Macro macro, burrito burritMacro macro, burrito burrit
Macro macro, burrito burrit
 
Creating ASTTs The painful truth
Creating ASTTs The painful truthCreating ASTTs The painful truth
Creating ASTTs The painful truth
 
Groovy android
Groovy androidGroovy android
Groovy android
 
Groovy on Android
Groovy on AndroidGroovy on Android
Groovy on Android
 
Gpars Workshop 2014
Gpars Workshop 2014Gpars Workshop 2014
Gpars Workshop 2014
 
Functional Programming with Groovy
Functional Programming with GroovyFunctional Programming with Groovy
Functional Programming with Groovy
 
Test Motherfucker...Test
Test Motherfucker...TestTest Motherfucker...Test
Test Motherfucker...Test
 
Programación concurrente con GPars
Programación concurrente con GParsProgramación concurrente con GPars
Programación concurrente con GPars
 
Greach 2011 : Creando Plugins Con Griffon
Greach 2011 : Creando Plugins Con GriffonGreach 2011 : Creando Plugins Con Griffon
Greach 2011 : Creando Plugins Con Griffon
 

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