gradle: build successful – clojug 23 mayo 2015

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

Upload: alexander-mera

Post on 09-Aug-2015

218 views

Category:

Software


2 download

TRANSCRIPT

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 + Ivyb. Apache Mavenc. Gradle

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

@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

@CLOJUG [23MAY2015] — @alexmera

¿Por qué necesito unabuild 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 lasbuild 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

b2local file

m2

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

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

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

checkstyleeclipseeclipse-wtpfindbugsideajdependpmdsigningsonar——En incubación:jacocosonar-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