SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
Alexander Mera (@alexmera) — @CLOJUG [23MAY2015]
BUILD SUCCESSFUL
@CLOJUG [23MAY2015] — @alexmera
AGENDA
1. ¿Por qué necesito una build tool?
2. La evolución de las build tools para Java.
a. Apache Ant + Ivy
b. Apache Maven
c. Gradle
3. ¿Qué es la gestión de dependencias?
a. Apache Maven
b. Ivy
@CLOJUG [23MAY2015] — @alexmera
AGENDA (cont.)
4. Introducción a Gradle: Project Automation
Tool
a. Principales características y
funcionalidades
b. Instalación y configuración
c. Gradle Wrapper
5. Demostración: Aplicación Java sencilla
@CLOJUG [23MAY2015] — @alexmera
¿Por qué necesito una
build tool?
@CLOJUG [23MAY2015] — @alexmera
Porque “soy perezoso”…
@CLOJUG [23MAY2015] — @alexmera
…y “prefiero evitar la fatiga”…
…de repetir una y otra
vez una serie de tareas
con el único propósito de
lograr siempre el mismo
objetivo.
@CLOJUG [23MAY2015] — @alexmera
¿Cúal es el objetivo de las build tools?
El principal objetivo de las build tools es
el de compilar y construir una imagen
de software usable a partir de su código
fuente.
@CLOJUG [23MAY2015] — @alexmera
Una “buena” build tool debería:
● Gestionar dependencias
● Permitir compilación incremental
● Gestionar los recursos
● Soportar diferentes perfiles
● Facilitar la automatización
@CLOJUG [23MAY2015] — @alexmera
La evolución de las
build tools (JVM)
@CLOJUG [23MAY2015] — @alexmera
Línea de tiempo
@CLOJUG [23MAY2015] — @alexmera
● Lanzado en el año 2000
● Primer build tool “moderno”
● Control completo
● Basado en XML:
○ build.xml
○ ivy.xml (dependencias)
<project>
<target>
<task>
@CLOJUG [23MAY2015] — @alexmera
● Lanzado en el año 2004
● Convención sobre
configuración
● Ciclos de vida
● Gestión de dependencias
● Basado en XML: POM.xml
[project]
[lifecycle]
[phase]
[plugin:goal]
@CLOJUG [23MAY2015] — @alexmera
● Lanzado en el año 2009
● Gestión de dependencias
● Convenciones flexibles
● Groovy DSL
● Plugins
[project]
[task]
@CLOJUG [23MAY2015] — @alexmera
Gestión de dependencias
@CLOJUG [23MAY2015] — @alexmera
¿Qué es?
my project
dep-A
dep-B
dep-C
B1
B2
jar
war
exe
maven
central
@CLOJUG [23MAY2015] — @alexmera
Conceptos básicos
my project
a
my other
project
b
b1
b2
local
file
m
2
Repositorio Cache local
Dependencias
Dependencias
transitivas
@CLOJUG [23MAY2015] — @alexmera
@CLOJUG [23MAY2015] — @alexmera
Introducción a Gradle:
Project Automation Tool
@CLOJUG [23MAY2015] — @alexmera
Características y funciones
● Builds declarativos y por
convención
● Multi-proyectos
● Builds escritos en Groovy
(DSL)
● Integración completa con Ant
Tasks
● Repositorios Maven, Ivy y
archivos locales
● Plugins, plugins, plugins
@CLOJUG [23MAY2015] — @alexmera
@CLOJUG [23MAY2015] — @alexmera
Instalación
● Requiere JDK o JRE versión 6 o superior
● Desempaquetar el archivo .zip descargado –
GRADLE_HOME
● Adicionar GRADLE_HOME/bin a la variable de
entorno PATH
@CLOJUG [23MAY2015] — @alexmera
¡Hola mundo!
@CLOJUG [23MAY2015] — @alexmera
¡Es Groovy!
@CLOJUG [23MAY2015] — @alexmera
Métodos
@CLOJUG [23MAY2015] — @alexmera
Ciclo de vida
● Inicialización
● Configuración
● Ejecución
@CLOJUG [23MAY2015] — @alexmera
Gradle Wrapper
● Batch script para Windows
● Shell script para Linux y OS X
● Debe incluirse en el control de
versiones – git
● Luego de integrado, NO requiere de
una instalación local
● Garantiza el uso de la versión
adecuada de Gradle
¡Úsalo en todos
tus builds!
@CLOJUG [23MAY2015] — @alexmera
Java plugin
@CLOJUG [23MAY2015] — @alexmera
War plugin
war
@CLOJUG [23MAY2015] — @alexmera
Plugins
Lenguajes Integración Proceso
java
groovy
scala
antlr
——
En incubación:
assembler
c
cpp
objective-c
objective-cpp
windows-resources
application
ear
jetty
maven
osgi
war
——
En incubación:
distribution
java-library-
distribution
ivy-publish
maven-publish
checkstyle
eclipse
eclipse-wtp
findbugs
idea
jdepend
pmd
signing
sonar
——
En incubación:
jacoco
sonar-runner
@CLOJUG [23MAY2015] — @alexmera
@CLOJUG [23MAY2015] — @alexmera
Fuentes
● https://docs.gradle.org/current/userguide/userguide
● http://zeroturnaround.com/rebellabs/java-build-tools-part-1-
an-introductory-crash-course-to-getting-started-with-maven-
gradle-and-ant-ivy/
● http://zeroturnaround.com/rebellabs/java-build-tools-how-
dependency-management-works-with-maven-gradle-and-
ant-ivy/
● http://technologyconversations.com/2014/06/18/build-tools/
● http://www.drdobbs.com/jvm/why-build-your-java-projects-
with-gradle/240168608

Más contenido relacionado

Similar a Introducción a Gradle como herramienta de automatización de builds

Destino la Nube 2012 - ALM para Azure
Destino la Nube 2012 - ALM para AzureDestino la Nube 2012 - ALM para Azure
Destino la Nube 2012 - ALM para AzureJose Luis Soria
 
003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdf003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdfDubiWeb.TK
 
Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Micael Gallego
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsEsteban Saavedra
 
Template paper-2015
Template paper-2015Template paper-2015
Template paper-2015facinger2
 
Los reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoLos reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoFinizens
 
Automatizacion de proyectos con gradle
Automatizacion de proyectos con gradleAutomatizacion de proyectos con gradle
Automatizacion de proyectos con gradleEdson Chávez Montaño
 
Flujo de trabajo con air y android
Flujo de trabajo con air y androidFlujo de trabajo con air y android
Flujo de trabajo con air y androidFrancisco Granados
 
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event managerIvan Ortega
 
Arquitectura de proyectos Drupal
Arquitectura de proyectos DrupalArquitectura de proyectos Drupal
Arquitectura de proyectos DrupalYmbra
 
Mi primera App con GAE
Mi primera App con GAEMi primera App con GAE
Mi primera App con GAEGDG Lima
 
Construccion de proyectos con gradle
Construccion de proyectos con gradleConstruccion de proyectos con gradle
Construccion de proyectos con gradleDavid Gómez García
 
Codemotion 2015 crash y youdebug
Codemotion 2015   crash y youdebugCodemotion 2015   crash y youdebug
Codemotion 2015 crash y youdebugjmiguel rodriguez
 

Similar a Introducción a Gradle como herramienta de automatización de builds (20)

Destino la Nube 2012 - ALM para Azure
Destino la Nube 2012 - ALM para AzureDestino la Nube 2012 - ALM para Azure
Destino la Nube 2012 - ALM para Azure
 
003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdf003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdf
 
Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web Grails
 
Template paper-2015
Template paper-2015Template paper-2015
Template paper-2015
 
Los reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoLos reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológico
 
Automatizacion de proyectos con gradle
Automatizacion de proyectos con gradleAutomatizacion de proyectos con gradle
Automatizacion de proyectos con gradle
 
Flujo de trabajo con air y android
Flujo de trabajo con air y androidFlujo de trabajo con air y android
Flujo de trabajo con air y android
 
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event manager
 
TUTORIAL DE AUTOCAD 2015
TUTORIAL DE AUTOCAD 2015TUTORIAL DE AUTOCAD 2015
TUTORIAL DE AUTOCAD 2015
 
Tutorial autocad2015
Tutorial autocad2015Tutorial autocad2015
Tutorial autocad2015
 
Modulo 1
Modulo 1Modulo 1
Modulo 1
 
Semana 2 Configuración entorno de desarrollo
Semana 2   Configuración entorno de desarrolloSemana 2   Configuración entorno de desarrollo
Semana 2 Configuración entorno de desarrollo
 
Arquitectura de proyectos Drupal
Arquitectura de proyectos DrupalArquitectura de proyectos Drupal
Arquitectura de proyectos Drupal
 
Mi primera App con GAE
Mi primera App con GAEMi primera App con GAE
Mi primera App con GAE
 
Integrando AngularJS y drupal
Integrando AngularJS y drupalIntegrando AngularJS y drupal
Integrando AngularJS y drupal
 
Construccion de proyectos con gradle
Construccion de proyectos con gradleConstruccion de proyectos con gradle
Construccion de proyectos con gradle
 
Angular: el presente-futuro
Angular: el presente-futuroAngular: el presente-futuro
Angular: el presente-futuro
 
Headless Wordpress with React & GraphQL
Headless Wordpress with React & GraphQLHeadless Wordpress with React & GraphQL
Headless Wordpress with React & GraphQL
 
Codemotion 2015 crash y youdebug
Codemotion 2015   crash y youdebugCodemotion 2015   crash y youdebug
Codemotion 2015 crash y youdebug
 

Introducción a Gradle como herramienta de automatización de builds

  • 1. Alexander Mera (@alexmera) — @CLOJUG [23MAY2015] BUILD SUCCESSFUL
  • 2. @CLOJUG [23MAY2015] — @alexmera AGENDA 1. ¿Por qué necesito una build tool? 2. La evolución de las build tools para Java. a. Apache Ant + Ivy b. Apache Maven c. Gradle 3. ¿Qué es la gestión de dependencias? a. Apache Maven b. Ivy
  • 3. @CLOJUG [23MAY2015] — @alexmera AGENDA (cont.) 4. Introducción a Gradle: Project Automation Tool a. Principales características y funcionalidades b. Instalación y configuración c. Gradle Wrapper 5. Demostración: Aplicación Java sencilla
  • 4. @CLOJUG [23MAY2015] — @alexmera ¿Por qué necesito una build tool?
  • 5. @CLOJUG [23MAY2015] — @alexmera Porque “soy perezoso”…
  • 6. @CLOJUG [23MAY2015] — @alexmera …y “prefiero evitar la fatiga”… …de repetir una y otra vez una serie de tareas con el único propósito de lograr siempre el mismo objetivo.
  • 7. @CLOJUG [23MAY2015] — @alexmera ¿Cúal es el objetivo de las build tools? El principal objetivo de las build tools es el de compilar y construir una imagen de software usable a partir de su código fuente.
  • 8. @CLOJUG [23MAY2015] — @alexmera Una “buena” build tool debería: ● Gestionar dependencias ● Permitir compilación incremental ● Gestionar los recursos ● Soportar diferentes perfiles ● Facilitar la automatización
  • 9. @CLOJUG [23MAY2015] — @alexmera La evolución de las build tools (JVM)
  • 10. @CLOJUG [23MAY2015] — @alexmera Línea de tiempo
  • 11. @CLOJUG [23MAY2015] — @alexmera ● Lanzado en el año 2000 ● Primer build tool “moderno” ● Control completo ● Basado en XML: ○ build.xml ○ ivy.xml (dependencias) <project> <target> <task>
  • 12. @CLOJUG [23MAY2015] — @alexmera ● Lanzado en el año 2004 ● Convención sobre configuración ● Ciclos de vida ● Gestión de dependencias ● Basado en XML: POM.xml [project] [lifecycle] [phase] [plugin:goal]
  • 13. @CLOJUG [23MAY2015] — @alexmera ● Lanzado en el año 2009 ● Gestión de dependencias ● Convenciones flexibles ● Groovy DSL ● Plugins [project] [task]
  • 14. @CLOJUG [23MAY2015] — @alexmera Gestión de dependencias
  • 15. @CLOJUG [23MAY2015] — @alexmera ¿Qué es? my project dep-A dep-B dep-C B1 B2 jar war exe
  • 16. maven central @CLOJUG [23MAY2015] — @alexmera Conceptos básicos my project a my other project b b1 b2 local file m 2 Repositorio Cache local Dependencias Dependencias transitivas
  • 18. @CLOJUG [23MAY2015] — @alexmera Introducción a Gradle: Project Automation Tool
  • 19. @CLOJUG [23MAY2015] — @alexmera Características y funciones ● Builds declarativos y por convención ● Multi-proyectos ● Builds escritos en Groovy (DSL) ● Integración completa con Ant Tasks ● Repositorios Maven, Ivy y archivos locales ● Plugins, plugins, plugins
  • 21. @CLOJUG [23MAY2015] — @alexmera Instalación ● Requiere JDK o JRE versión 6 o superior ● Desempaquetar el archivo .zip descargado – GRADLE_HOME ● Adicionar GRADLE_HOME/bin a la variable de entorno PATH
  • 22. @CLOJUG [23MAY2015] — @alexmera ¡Hola mundo!
  • 23. @CLOJUG [23MAY2015] — @alexmera ¡Es Groovy!
  • 24. @CLOJUG [23MAY2015] — @alexmera Métodos
  • 25. @CLOJUG [23MAY2015] — @alexmera Ciclo de vida ● Inicialización ● Configuración ● Ejecución
  • 26. @CLOJUG [23MAY2015] — @alexmera Gradle Wrapper ● Batch script para Windows ● Shell script para Linux y OS X ● Debe incluirse en el control de versiones – git ● Luego de integrado, NO requiere de una instalación local ● Garantiza el uso de la versión adecuada de Gradle ¡Úsalo en todos tus builds!
  • 27. @CLOJUG [23MAY2015] — @alexmera Java plugin
  • 28. @CLOJUG [23MAY2015] — @alexmera War plugin war
  • 29. @CLOJUG [23MAY2015] — @alexmera Plugins Lenguajes Integración Proceso java groovy scala antlr —— En incubación: assembler c cpp objective-c objective-cpp windows-resources application ear jetty maven osgi war —— En incubación: distribution java-library- distribution ivy-publish maven-publish checkstyle eclipse eclipse-wtp findbugs idea jdepend pmd signing sonar —— En incubación: jacoco sonar-runner
  • 31. @CLOJUG [23MAY2015] — @alexmera Fuentes ● https://docs.gradle.org/current/userguide/userguide ● http://zeroturnaround.com/rebellabs/java-build-tools-part-1- an-introductory-crash-course-to-getting-started-with-maven- gradle-and-ant-ivy/ ● http://zeroturnaround.com/rebellabs/java-build-tools-how- dependency-management-works-with-maven-gradle-and- ant-ivy/ ● http://technologyconversations.com/2014/06/18/build-tools/ ● http://www.drdobbs.com/jvm/why-build-your-java-projects- with-gradle/240168608