WRITE GRADLE PLUGINSWRITE GRADLE PLUGINS
ESCRIBIR Y PUBLICAR TUS PLUGINS DEESCRIBIR Y PUBLICAR TUS PLUGINS DE
GRADLE "MADE EASY"GRADLE "MADE EASY"
Jorge Aguilera
1
PROJECTPROJECT
Cada build de Gradle está formado por un conjunto
de proyectos.
Puede ser construir un algo (un jar, un war, un zip,
etc)
Pero también puede ser hacer algo (desplegar un
servicio, enviar un tweet, etc)
8
TIPSTIPS
build.gradle es un DSL (ver charla de Groogle)
que describe builds
es Groovy!!!
Lo que no está de nido en build.gradle se busca
en Project
9
PROJECT PROPERTIESPROJECT PROPERTIES
Name Type Default
project Project The Project instance
name String The name of the project directory.
path String The absolute path of the project.
description String A description for the project.
projectDir File The directory containing the build script.
10
PROJECT PROPERTIESPROJECT PROPERTIES
Name Type Default
buildDir File projectDir/build
group Object unspecified
version Object unspecified
ant AntBuilder An AntBuilder instance
11
PLUGINSPLUGINS
Mecanismo para compartir Tasks
Un plugin puede añadir 1 o varias Tasks
Dónde:
chero build.gradle
directorio buildSrc/src/main/groovy
proyecto independiente
17
PROYECTO INDEPENDIENTEPROYECTO INDEPENDIENTE
Elegir un nombre cuali cado
gradle init
Crear MyTask
Crear MyPlugin y aplicar la Task
Anotar con @TaskAction el main de la Task
Declarar el plugin /META-INF/gradle-
plugins/TU.PLUGIN.CUALIFICADO.properties
19
CONFIGURACIÓN TASKCONFIGURACIÓN TASK
Identi car propiedades de la task
Aunque sea Groovy crea métodos get/set más una
función
Piensa en el usuario y no te limites a una lista de
propiedades (puedes anidarlas)
24
CONFIGURACIÓN TASKCONFIGURACIÓN TASK
Identi car propiedades de la task
Aunque sea Groovy crea métodos get/set más una
función
Piensa en el usuario y no te limites a una lista de
propiedades (puedes anidarlas)
Input (un chero de entrada por ejemplo) vs Output
(un directorio de salida)
24
CONFIGURACIÓN TASKCONFIGURACIÓN TASK
Identi car propiedades de la task
Aunque sea Groovy crea métodos get/set más una
función
Piensa en el usuario y no te limites a una lista de
propiedades (puedes anidarlas)
Input (un chero de entrada por ejemplo) vs Output
(un directorio de salida)
Valores simples, basados en cheros ( le, collections,
etc), anidadas 24
ANOTACIONESANOTACIONES
Anota siempre métodos get o la property Groovy para
ayudar a Gradle!!
Name Name Name Name
@Input @Output @InputFile @OutputFile
@InputFiles @OutputFiles @InputDirectory @OutputDirectory
@Optional @Internal @Nested @TaskAction
25
CHECK-SERVERCHECK-SERVER
Ejecuta la task si una URL devuelve 200 y puedes
descargar el body a chero
id 'com.puravida.gradle.checkserver'
Show me the code!!!
https://puravida-gradle.gitlab.io/check-server
31
SOCIAL NETWORKSOCIAL NETWORK
Comparte el resultado de un build por ejemplo
twitter, telegram, slack
id 'com.puravida.gradle.socialnetwork'
Show me the code!!!
https://puravida-gradle.gitlab.io/social-network
32