Top Banner
Alexander Mera (@alexmera) — @CLOJUG [23MAY2015] BUILD SUCCESSFUL
31
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

Alexander Mera (@alexmera) — @CLOJUG [23MAY2015]

BUILD SUCCESSFUL

Page 2: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

AGENDA

1. ¿Por qué necesito una build tool?2. La evolución de las build tools para Java.

a. Apache Ant + Ivyb. Apache Mavenc. Gradle

3. ¿Qué es la gestión de dependencias?a. Apache Mavenb. Ivy

Page 3: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

AGENDA (cont.)

4. Introducción a Gradle: Project Automation Toola. Principales características y

funcionalidadesb. Instalación y configuraciónc. Gradle Wrapper

5. Demostración: Aplicación Java sencilla

Page 4: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

¿Por qué necesito unabuild tool?

Page 5: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

Porque “soy perezoso”…

Page 6: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@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.

Page 7: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@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.

Page 8: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@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

Page 9: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

La evolución de lasbuild tools (JVM)

Page 10: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

Línea de tiempo

Page 11: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@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>

Page 12: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@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]

Page 13: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

● Lanzado en el año 2009● Gestión de dependencias● Convenciones flexibles● Groovy DSL● Plugins

[project]

[task]

Page 14: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

Gestión de dependencias

Page 15: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

¿Qué es?

my project

dep-A

dep-B

dep-C

B1

B2

jar

war

exe

Page 16: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

maven central

@CLOJUG [23MAY2015] — @alexmera

Conceptos básicos

my project

a

my other project

b

b1

b2local file

m2

Repositorio Cache local

Dependencias

Dependencias transitivas

Page 17: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

Page 18: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

Introducción a Gradle: Project Automation Tool

Page 19: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@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

Page 20: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

Page 21: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@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

Page 22: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

¡Hola mundo!

Page 23: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

¡Es Groovy!

Page 24: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

Métodos

Page 25: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

Ciclo de vida

● Inicialización● Configuración● Ejecución

Page 26: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@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!

Page 27: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

Java plugin

Page 28: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

War plugin

war

Page 29: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

Plugins

Lenguajes Integración Proceso

javagroovyscalaantlr——En incubación:assemblerccppobjective-cobjective-cppwindows-resources

applicationearjettymavenosgiwar——En incubación:distributionjava-library-distributionivy-publishmaven-publish

checkstyleeclipseeclipse-wtpfindbugsideajdependpmdsigningsonar——En incubación:jacocosonar-runner

Page 30: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@CLOJUG [23MAY2015] — @alexmera

Page 31: Gradle: BUILD SUCCESSFUL – CLOJUG 23 MAYO 2015

@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