style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Usar Gradle Wrapper para evitar instalar Gradle

 

Gradle es una excelente herramienta de construcción. Podría ser en conjunto son SBT las mas avanzadas en Java. Durante los años se ha aprendido mucho de la experiencia de herramientas similares como Ant y Maven. Gradle y SBT han sabido aprovechar muy bien esta experiencia para beneficio de nosotros los desarrolladores.

Gradle es relativamente nuevo, muy poca gente lo conoce y puede ser que en algunas situaciones sea impedimento su uso, por que algo tan simple como tenerlo instalado, no ocurre. La gente que desarrollo Gradle pensó en casos en los cuales puedes compartir tu proyecto, pero sin necesidad de instalarlo cuando compartes tu proyecto (en tu maquina si debes tenerlo instalado primero). Esto es fantástico porque por un lado, evitas que la gente que usa tu proyecto, instale Gradle; también es posible que tu proyecto use o requiera cierta versión especifica de Gradle, usando el fabuloso Gradle Wrapper, no tienes porque preocuparte.

Para que esto funcione solo tienes que crear un archivo de configuración de Gradle, generalmente se llama build.gradle. El contenido de este archivo debe tener solo una tarea, como a continuación se muestra:

 

task createWrapper(type: Wrapper) {
    gradleVersion = '1.0-milestone-4'
}

 

Lo que vemos arriba es la definición de una tarea que se llama createWrapper (se puede llamar como tu quieras), que es de tipo Wrapper. Esta tarea lo único que define es la versión de Gradle, que vas a necesitar en tu proyecto. Aquí puede ser cualquier versión valida de Gradle.

A continuación en una terminal de tu sistema ejecutas a Gradle con el siguiente comando en el directorio donde esta tu archivo build.gradle:

 

gradle createWrapper

 

Este comando invoca a la versión de Gradle que tengas en tu maquina instalado, que bien puede ser diferente de la versión que especificaste en tu proyecto. Ya había mencionado que cuando creas el proyecto es requisito tener instalado Gradle, el Gradle Wrapper evita que al compartir tu proyecto debas previamente instalar Gradle. Al terminar de ejecutarse Gradle te habrá dejado en el directorio donde esta tu proyecto los siguientes archivos y carpetas:

 

  • gradle. Carpeta que contiene un jar con las clases necesarias para ejecutar el Gradle Wrapper
  • gradlew. Shell script para sistemas que usen una variante de UN*X
  • gradlew.bat. Archivo por lotes para Windows

 

Cuando compartas tu proyecto solo sera necesario que en lugar de usar el comando gradle, usen gradlew, si no tienen la versión de Gradle, el Wrapper lo descargara de internet y lo instalara (solo descomprime un ZIP en tu directorio home) para que sea usado en tu proyecto.

Así puedes seguir añadiendo mas tareas o plugins a tu build de Gradle o actualizar la versión de Gradle y no forzar a las demás personas que instalen antes de usar tu proyecto. Gradle Wrapper hara ese trabajo.

 

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

A ver si entendí. En tu

A ver si entendí.

En tu proyecto que tiene gradle, creas el gradle wrapper que va a generar un archivo gradlew que a su vez, cuando lo distribuyas ( ejemplo vía git o hg ) y al ser ejecutado, lo primero que va a hacer es descargar la versión de gradle, para que después ya puedas construir todo el proyecto, tal y como fue definido en el proyecto original. ¿Correcto?

Ohh.. muy bien, si eso hace mucha falta.

A veces encuentro proyectos que se oyen interesante y me dan ganas de bajarlos pero luego de ponerme a pensar o bien en conseguir configurar todas sus dependencias o bien en tener que instalar una herramienta extra para que resuelva sus dependencias digo: "mmhh mejor veo otra vez ese video de la patinadora china"

Esto definitivamente ayuda mucho a reducir esa barrera y efectivamente, es muy poco conocido.

+1 por el post Domix, y que vengan muchos más.

Imagen de benek

Si la versión es la correcta...

Muy bueno.

Me quedé intrigado con qué pasa si la versión sí es la correcta...?¿ De todos modos baja la versión o con lo que tiene entre los .jar ya viene un mini-gradle con lo estrictamente necesario para construir el proyecto?

En fin, son detalles pero la idea es muy muy buena.

Imagen de neko069

Gracias @domix por el intro a

Gracias @domix por el intro a Gradle, habrá que revisarlo, con ésto ya tengo oootro pretexto para probar Gradle, a ver si después lo puedo proponer en algún proyecto
@OscarRyz ... en mi máquina no se ve el link del video que mencionas ;¬)

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">