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:
-
¿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? -
La misma pregunta anterior, pero para los
gradle/wrapper/*
(gradle-wrapper.jar
ygradle-wrapper.properties
)? -
Algunas veces veo otros archivos
*.gradle
dentro del directoriogradle
del proyecto. ¿Qué son estos archivos Gradle adicionales y qué representan / hacen? Complementos personalizados? -
¿Cuál es la diferencia en las propiedades que entran en
settings.gradle
frente a lo que debería definirse dentro degradle.properties
?
-
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 archivobuild.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.
-
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.) ybuild.gradle
generar los archivos. -
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.
-
settings.gradle
es responsable más bien de la estructura del proyecto (módulos, nombres, etc.), mientras quegradle.properties
se usa para los detalles externos del proyecto y Gradle (versión, argumentos de la línea de comandos-XX
, propiedades, etc.)
-
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
ygradlew.bat
, así comogradle/wrapper/gradle-wrapper.properties
ygradle-wrapper.jar
para proporcionar la versión actual de gradle, wrap. -
Esos son todos parte de la envoltura.
-
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. -
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")
}