¿Endemoniado por lo lento que es Gradle en el arranque? Aprende a controlar su Daemon, y vuela!

1
9410

Creación: 14-12-2013

Índice de contenidos

1. Introducción
2. Entorno
3. Usando el daemon de Gradle
4. Configurar el daemon para usarlo por defecto
5. Parando el daemon
6. Conclusiones
7. Sobre el autor

1. Introducción

En este tutorial: Cómo instalar Gradle, herramienta de automatización de builds, dimos los primeros pasos con Gradle, pero si habéis fijado, Gradle en el arranque es endemoniadamente lento!

Tanto es así que un proyecto vacío, sin ningún fuente que compilar, tarda en mi máquina 2.47 segundos! Esto es una broma ¿no?!?!?!

Aquí el ejemplo del fichero build.gradle:

apply plugin: 'java'

sourceCompatibility = 1.7
version = '1.0'

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

Y aquí el resultado de la ejecución:

Así que en este tutorial vamos a ver cómo tomar el control del daemon que lleva Gradle porque el que no corre, vuela!

2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro 15′ (2.3 GHz Intel i7, 16GB 1600 Mhz DDR3, 500GB Flash Storage).
  • NVIDIA GeForce G7 750M
  • Sistema Operativo: Mac OS X Lion 10.9
  • Java 1.7.0_45
  • Maven 3.1.1

3. Usando el daemon de Gradle

Gradel se puede lanzar en modo daemon, de forma que lee los ficheros de configuración una sola vez y se queda en memoria, de forma que las siguientes veces ya tiene el trabajo medio hecho, y va mucho más rápido. Para ello usamos la opción --daemon

Por ejemplo:

Vemos que en esta primera ejecución hemos tardado incluso más que antes!!! Pero que no panda el cúnico, esto se debe a las tareas de inicialización del demonio, y solo ocurre con la primera ejecución, si volvemos a lanzar el comando, como el demonio ya está cargado en memoria, la ejecución será prácticamente inmediata:

4. Configurar el daemon para usarlo por defecto

Cada vez que queremos usar el demonio que tenemos cargado en memoria tenemos que añadir la opción --daemon.
Pero esto puede resultar un poco cansino, así que vamos a configurar Gradle para que por defecto siempre use el demonio.

Para ello editamos el fichero $HOME/.gradle/gradle.properties, y añadimos la línea:

    org.gradle.daemon=true

Salvamos el fichero, y a partir de este momento siempre que ejecutemos Gradle intentará conectarse al demonio, y si no existe todavía (la primera vez) lo creará:

5. Parando el daemon

Si por lo que sea queremos parar el demonio, basta con ejecutar gradle con la opción --stop:

6. Conclusiones

Si ves que algo que no te cuadra o no te gusta, investiga y lucha por arreglarlo, y sobre todo y como digo siempre:
LEE LA DOCUMENTACION!

7. Sobre el autor

Alejandro Pérez García, Ingeniero en Informática (especialidad de Ingeniería del Software) y Certified ScrumMaster

Socio fundador de Autentia (Desarrollo de software, Consultoría, Formación)

mailto:alejandropg@autentia.com

Autentia Real Business Solutions S.L. – «Soporte a Desarrollo»

http://www.autentia.com

 

Alejandro es socio fundador de Autentia y nuestro experto en Java EE, Linux y optimización de aplicaciones empresariales. Ingeniero en Informática y Certified ScrumMaster. Seguir @alejandropgarci Si te gusta lo que ves, puedes contratarle para darte ayuda con soporte experto, impartir cursos presenciales en tu empresa o para que realicemos tus proyectos como factoría (Madrid). Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría y formación.

1 COMENTARIO

  1. Buen tutorial. Interesante.

    (Eso sí, la última vez que lo estuve mirando, las exclamaciones se abrían. Verbigracia: \\\»el que no corre, ¡vuela!\\\»)

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad