the plugin makes installed independent distributionurl change added gradle build.gradle gradlew

plugin - upgrade gradle wrapper properties



¿Cómo/cuándo generar archivos de envoltura de Gradle? (7)

Generando el Gradle Wrapper

Proyecto construir gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules. // Running ''gradle wrapper'' will generate gradlew - Getting gradle wrapper working and using it will save you a lot of pain. task wrapper(type: Wrapper) { gradleVersion = ''2.2'' } // Look Google doesn''t use Maven Central, they use jcenter now. buildscript { repositories { jcenter() } dependencies { classpath ''com.android.tools.build:gradle:1.0.1'' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } }

Luego en la línea de comando ejecutar

gradle wrapper

Si le falta gradle en su sistema, instálelo o lo anterior no funcionará. En una Mac, es mejor instalar a través de Homebrew.

brew install gradle

Después de haber ejecutado con éxito la tarea de envoltura y generado gradlew , no use su sistema gradlew. Le ahorrará muchos dolores de cabeza.

./gradlew assemble

¿Qué pasa con el complemento Gradle visto anteriormente?

com.android.tools.build:gradle:1.0.1

Debe configurar la versión como la última y puede consultar la página de herramientas y editar la versión en consecuencia.

Mira lo que genera Android Studio

La incorporación de Gradle y el más reciente Android Studio han cambiado drásticamente el diseño del proyecto. Si tiene un proyecto anterior, le recomiendo crear uno limpio con el último Android Studio y ver qué considera Google el proyecto estándar.

Android Studio tiene facilidades para importar proyectos antiguos que también pueden ayudar.

Estoy tratando de entender cómo funciona el Gradle Wrapper. En muchos repositorios de origen, veo la siguiente estructura:

projectRoot/ src/ build.gradle gradle.properties settings.gradle gradlew gradlew.bat gradle/ wrapper/ gradle-wrapper.jar gradle-wrapper.properties

Mis preguntas:

  1. ¿Cómo / cuándo se genera gradlew / gradlew.bat ? ¿Se supone que debe generarlos solo una vez cuando se crea el proyecto por primera vez, los genera cada vez que confirma / empuja cambios? ¿Y cómo se generan?
  2. La misma pregunta anterior, pero para los gradle/wrapper/* ( gradle-wrapper.jar y gradle-wrapper.properties )?
  3. Algunas veces veo otros archivos *.gradle dentro del directorio gradle del proyecto. ¿Qué son estos archivos Gradle adicionales y qué representan / hacen? Complementos personalizados?
  4. ¿Cuál es la diferencia en las propiedades que entran en settings.gradle frente a lo que debería definirse dentro de gradle.properties ?

  1. Lo genera una vez, y nuevamente cuando desea cambiar la versión de Gradle que usa en el proyecto. No hay necesidad de generar es tan a menudo. Here están los documentos. Simplemente agregue la tarea de wrapper al archivo build.gradle y ejecute esta tarea para obtener la estructura del contenedor.

    Tenga en cuenta que necesita tener instalado Gradle para generar un contenedor. ¡La gran herramienta para gestionar los artefactos del ecosistema g es SDKMAN! . Para generar un contenedor de gradle, agregue el siguiente código al archivo build.gradle :

    task wrapper(type: Wrapper) { gradleVersion = ''2.0'' //version required }

    y correr:

    gradle wrapper

    tarea. Agregue los archivos resultantes a SCM (por ejemplo, git) y a partir de ahora todos los desarrolladores tendrán la misma versión de Gradle cuando usen Gradle Wrapper.

    Con Gradle 2.4 (o superior) puede configurar un contenedor sin agregar una tarea dedicada:

    gradle wrapper --gradle-version 2.3

    o

    gradle wrapper --gradle-distribution-url https://myEnterpriseRepository:7070/gradle/distributions/gradle-2.3-bin.zip

    Todos los detalles se pueden encontrar here

Desde Gradle 3.1 también se puede usar la opción de --distribution-type . Las opciones son binarias y todas y bin . todo además contiene código fuente y documentación. todo también es mejor cuando se usa IDE, por lo que el editor funciona mejor. El inconveniente es que la compilación puede durar más (necesita descargar más datos, no tiene sentido en el servidor CI) y tomará más espacio.

  1. Estos son archivos de Gradle Wrapper. Debe generarlos una vez (para una versión en particular) y agregarlos al control de versiones. Si necesita cambiar la versión de Gradle Wrapper, cambie la versión en build.gradle consulte (1.) y build.gradle generar los archivos.

  2. Da un ejemplo detallado. Dicho archivo puede tener múltiples propósitos: proyecto de varios módulos, separación de responsabilidad, secuencia de comandos ligeramente modificada, etc.

  3. settings.gradle es responsable más bien de la estructura del proyecto (módulos, nombres, etc.), mientras que gradle.properties se usa para los detalles externos del proyecto y Gradle (versión, argumentos de la línea de comandos -XX , propiedades, etc.)


  1. Los generará una vez, pero los actualizará si necesita una nueva característica o algo de un complemento que a su vez necesita una versión de Gradle más nueva.

    La forma más fácil de actualizar: a partir de Gradle 2.2, puede descargar y extraer la distribución completa o binaria de Gradle y ejecutar:

    $ <pathToExpandedZip>/bin/gradle wrapper

    No es necesario definir una tarea, aunque probablemente necesite algún tipo de archivo build.gradle .

    Esto actualizará o creará el gradlew y gradlew.bat , así como gradle/wrapper/gradle-wrapper.properties y gradle-wrapper.jar para proporcionar la versión actual de gradle, wrap.

  2. Esos son todos parte de la envoltura.

  3. Algunos archivos build.gradle referencia a otros archivos o archivos en subdirectorios que son subproyectos o módulos. Se vuelve un poco complicado, pero si tiene un proyecto, básicamente necesita el único archivo.

  4. settings.gradle maneja proyectos, módulos y otros tipos de nombres y configuraciones, gradle.properties configura variables reutilizables para sus archivos gradle si lo desea y cree que serían más claros de esa manera.


A partir de Gradle 2.4, puede usar gradle wrapper --gradle-version XX para configurar una versión específica de Gradle wrapper, sin agregar ninguna tarea a su archivo build.gradle . La próxima vez que use el contenedor, descargará la distribución de Gradle adecuada para que coincida.


Como las tareas integradas de Gradle están en desuso en 4.8, intente a continuación

wrapper { gradleVersion = ''2.0'' //version required }

y correr

gradle wrapper


Este es el comando que se debe usar para indicarle a Gradle que actualice el contenedor de modo que tome las versiones de distribución de las bibliotecas que incluyen el código fuente:

./gradlew wrapper --gradle-version <version> --distribution-type all

Si especifica el tipo de distribución con "todos", se asegurará de que Gradle descargue los archivos fuente para que los utilice su entorno de desarrollo.

Pros :

  • Los IDE tendrán acceso inmediato al código fuente. Por ejemplo, Intellij IDEA no le pedirá que actualice sus scripts de compilación para incluir la distribución de origen (porque este comando ya lo hizo)

Contras :

  • Proceso de compilación más largo / más grande porque está descargando el código fuente. Esto es una pérdida de tiempo / espacio en un servidor de compilación o CI donde el código fuente no es necesario.

Comente o proporcione otra respuesta si conoce alguna opción de línea de comandos para decirle a Gradle que no descargue fuentes en un servidor de compilación.


Si desea descargar gradle con fuente y documentos, la url de distribución predeterminada configurada en gradle-wrapper.properites no satisfará su necesidad. Es https://services.gradle.org/distributions/gradle-2.10-bin.zip , no https://services.gradle.org/distributions/gradle-2.10-all.zip . Esta IDL completa es sugerida por IDE como Android Studio. Si desea descargar el gradle completo, puede configurar la tarea de envoltura de esta manera :

task wrapper(type: Wrapper) { gradleVersion = ''2.13'' distributionUrl = distributionUrl.replace("bin", "all") }