20 Pregunta: ¿Cómo puedo forzar a Gradle a volver a descargar las dependencias?

pregunta creada en Mon, Nov 26, 2012 12:00 AM

¿Cómo puedo indicar a Gradle que vuelva a descargar las dependencias desde los repositorios?

    
630
20 Respuestas                              20                         

En general, puede actualizar las dependencias en su caché con la opción de línea de comandos . También puede eliminar los archivos en caché bajo ~/.gradle/caches. Con la siguiente compilación, Gradle intentaría descargarlos de nuevo.

¿Cuál es su caso de uso específico? ¿Utiliza versiones de dependencia dinámica o versiones SNAPSHOT?


En los sistemas Unix, puede eliminar todos los artefactos existentes (artefactos y metadatos) que Gradle ha descargado usando:

 
rm -rf $HOME/.gradle/caches/
    
748
2018-02-16 20: 43: 11Z
  1. No puedo hablar por OP, pero mi caso de uso específico es probar si mi configuración de un repositorio que no sea de MavenCentral realmente funciona.
    2013-06-24 08: 15: 32Z
  2. También debe eliminar el directorio ~ /.m2 (si existe). Si ha configurado el repositorio de Maven, algunos de esos artefactos también se descargarán a ~ /.m2. Es mejor eliminar tanto ~ /.gradle como ~ /.m2 para comenzar en una pizarra limpia.
    2014-01-14 21: 05: 28Z
  3. Maven Local solo es relevante si su compilación lo define como un repositorio.
    2014-01-16 21: 21: 11Z
  4. @ Gopinath es un consejo peligroso, ya que .m2 puede contener un archivo de configuración de Maven. Supongo que te refieres a eliminar .m2 /repositorio
    2015-11-05 08: 28: 01Z
  5. para estar seguro, solo cambia el nombre de la carpeta ...
    2016-10-25 13: 58: 09Z

Si está utilizando una versión reciente de Gradle, puede usar la opción --refresh-dependencies.

 
./gradlew build --refresh-dependencies

puede consultar el manual de Gradle .

  

La opción --refresh-dependencies le dice a Gradle que ignore todas las entradas almacenadas en caché para los módulos y artefactos resueltos. Se realizará una nueva resolución en todos los repositorios configurados, con las versiones dinámicas recalculadas, los módulos renovados y Artefactos descargados.

    
545
2018-10-01 17: 46: 14Z
  1. Debe tener en cuenta que dado que Gradle intentará descargar todos los archivos de dependencia, llevará mucho tiempo.
    2015-08-31 07: 20: 22Z
  2. También vale la pena señalar que esto no siempre funciona. Acabo de probar la ejecución de "gradle clear war --refresh-dependencies" con un frasco en caché que tenía tres días de antigüedad, cuando había implementado una nueva versión la noche anterior. La construcción se rompió debido a la falta de una dependencia que se agregó en el nuevo código. Todavía tenía el frasco de tres días en el caché después. Terminé simplemente eliminando la carpeta de la versión en mi caché .m2 y la reconstrucción. Luego obtuvo la versión más reciente porque, básicamente, no tenía otra opción.
    2016-03-22 16: 05: 58Z
  3. mejor aún, solo ./gradlew --refresh-dependencies
    2017-03-02 17: 38: 09Z
  4. Esto funcionó muy bien como './gradlew build --refresh-dependencies' desde el terminal de Android Studio. ¡Gracias!
    2017-07-06 00: 34: 04Z
  5. ¿Hay alguna forma de que Android Studio haga esto en una compilación desde el interior del IDE?
    2018-07-12 14: 32: 54Z

Puede decirle a Gradle que vuelva a descargar algunas dependencias en el script de compilación marcando la dependencia como "cambiante". Luego, Gradle buscará actualizaciones cada 24 horas, pero esto se puede configurar utilizando la resolución DSL de estrategia. Me parece útil usar esto para compilaciones SNAPSHOT o NIGHTLY.

 
configurations.all {
    // Check for updates every build
    resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}

Expandido:

 
dependencies {
    compile group: "group", name: "projectA", version: "1.1-SNAPSHOT", changing: true
}

Condensado:

 
compile('group:projectA:1.1-SNAPSHOT') { changing = true }

Encontré esta solución en este hilo del foro .

    
275
2016-02-29 06: 50: 14Z
  1. ¿Sabes cómo funciona esto para las fuentes de la misma biblioteca? Actualmente, la biblioteca compilada se descarga cada vez que cambia, pero la fuente no lo está.
    2014-02-19 15: 35: 12Z
  2. Una versión de instantánea está "cambiando" por definición. Gradle lo sabe, por lo que realmente no necesita definir esto en su declaración de dependencia.
    2014-05-16 13: 40: 11Z
  3. Gracias por esto. FWIW, nuestra dependencia estaba en una versión instantánea y hasta que lo hicimos, no estaba buscando actualizaciones en cada compilación.
    2014-07-09 00: 54: 55Z
  4. cacheChangingModulesFor es la clave, changing: true es opcional porque está implícito en -SNAPSHOT, es posible usar la abreviatura aquí: compile 'group:projectA:1.1-SNAPSHOT' debido a la implicación anterior. También se puede restringir la resolución de la estrategia a una configuración: configurations.compile.resolutionS....
    2014-11-10 13: 15: 23Z
  5. @ Umi ¿Hay una versión condensada de esto? ¿Como compile 'com.burrowsapps:ads:1.0:true'?
    2016-02-29 06: 44: 31Z

Para MAC

./gradlew build --refresh-dependencies

Para Windows

gradlew build --refresh-dependencies

También puede probar gradlew assembleDevelopmentDebug --refresh-dependencies

    
58
2018-02-14 17: 31: 19Z
  1. Esto parece un comando de envoltura de gradle de Android.
    2017-06-27 21: 55: 43Z
  2. Android usa gradle regular. Es solo un plugin.
    2018-02-01 19: 55: 05Z

Para Windows ... para que las dependencias de re-descarga de Gradle sean específicas :

  1. elimine las dependencias que desea volver a descargar del directorio a continuación:

     
    C:\Users\[username]\.gradle\caches\modules-2\files-2.1
    
  2. elimine todos los directorios metadata en la ruta:

     
    C:\Users\[username]\.gradle\caches\modules-2\metadata-*
    
  3. ejecute gradle build (o gradlew build si usa Gradle Wrapper) en el directorio raíz del proyecto.

nota: los números en las rutas de archivo anteriores pueden ser diferentes para usted.

    
24
2017-01-25 19: 58: 50Z

Uno puede eliminar la carpeta con archivos en caché.

En mi caso, en Mac la biblioteca se almacenó en la ruta:

/Users/MY_NAME/.gradle/caches/modules-2/files-2.1/cached-library-to-remove

Eliminé la carpeta de la biblioteca en caché ("cached-library-to-remove" en el ejemplo anterior), eliminé la carpeta de compilación de mi proyecto y la compilé nuevamente. La biblioteca nueva fue descargada entonces.

    
17
2018-05-20 04: 16: 16Z

En lugar de eliminar la memoria caché de Gradle completa, como sugieren algunas respuestas, puede eliminar la memoria caché para un grupo específico o un ID de artefacto. Agregué la siguiente función a mi .bash_profile:

 
deleteGradleCache() {
  local id=$1
  if [ -z "$id" ]; then
    echo "Please provide an group or artifact id to delete"
    return 1
  fi
  find ~/.gradle/caches/ -type d -name "$id" -prune -exec rm -rf "{}" \; -print
}

Uso:

 
$ deleteGradleCache com.android.support

Luego, en la siguiente compilación o si vuelves a sincronizar, gradle volverá a descargar las dependencias.

    
12
2016-11-22 18: 12: 17Z

Esto funcionó para mí. Asegúrate de que Gradle no esté configurado como desconectado desactivando el botón en Archivo > Configuración > Gradle > Trabajo sin conexión.

Agregue esto al nivel superior de su build.gradle, es bueno tener dependencias por encima

 
configurations.all {
    resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}

Me aseguré de que mis dependencias estén escritas así:

 
implementation('com.github.juanmendez:ThatDependency:ThatBranch-SNAPSHOT') {
    changing = true
}

A continuación, abro el panel de Gradle en Android Studio y hago clic en el botón de flechas del círculo azul. Siempre puedo ver mis actualizaciones obteniendo una nueva copia nueva.

    
7
2018-09-05 14: 22: 00Z

Hay 2 formas de hacerlo:

  1. Uso de la opción de línea de comandos para actualizar dependencias cashe.
  2. Puede eliminar el caché local donde los artefasts son cachés por Gradle y la creación del disparador

Utilizando la opción --refresh-dependencies :

 
./gradlew build --refresh-dependencies

Explicación breve : la opción de actualización de dependencias le dice a Gradle que ignore todas las entradas en caché para los módulos y artefactos resueltos.

Explicación larga

  • CON las dependencias de actualización, Gradle siempre llegará al servidor remoto para buscar artefactos actualizados: sin embargo, Gradle evitará descargar un archivo donde ya exista el mismo archivo en el caché.
    • First Gradle realizará una solicitud HEAD y verificará si el servidor informa que el archivo no ha cambiado desde la última vez (si la "longitud del contenido" y la "última modificación" no han cambiado). En este caso, aparecerá el mensaje: "El recurso en caché está actualizado (LastModified: {})".
    • Next Gradle determinará la suma de comprobación remota si es posible (ya sea de la solicitud HEAD o descargando un archivo '.sha1') .. Si esta suma de comprobación coincide con otro archivo ya descargado (de cualquier repositorio), Gradle simplemente copiará el archivo en el caché, en lugar de volver a descargar. En este caso, aparecerá el mensaje: "" Se encontró un recurso disponible localmente con una suma de comprobación coincidente: [{}, {}] ".

Usando eliminar: Cuando eliminas cachés

 
rm -rf $HOME/.gradle/caches/

Simplemente limpia todos los frascos en caché y las sumas sha1 y Gradle se encuentra en una situación en la que no hay artefactos en su máquina y tiene que descargar todo. Sí, funcionará al 100% por primera vez, pero cuando se lance otro SNAPSHOT y forme parte de su árbol de dependencias, se enfrentará nuevamente frente a la opción de actualizar o purgar los cachés.

    
6
2018-08-05 05: 31: 01Z

eliminar este directorio:

 
C:\Users\[username]\.gradle
    
2
2017-07-12 18: 56: 17Z
  1. Dado que hay configuraciones potencialmente locales, eliminar, (o renombrar /reubicar) el directorio de cachés como se menciona en otras respuestas es una mejor solución.
    2017-10-16 17: 30: 34Z

Para aquellos que se preguntan dónde ejecutar los comandos de gradle:

Abrir Android Studio - > Haga clic en Terminal (Lo encontrará en la base de Android Studio) - > Se abrirá la herramienta de comando --- > Escriba su comando (gradlew build --refresh-dependencies )

    
1
2018-10-05 08: 13: 15Z

Mb Soy demasiado tarde, sin embargo, mi solución es para un único repositorio. Creo que eliminar ~ /.gradle /* es una exageración. El problema con el que me topé fue que estaba borrando el directorio donde estaban las fuentes y Gradle estaba obteniendo otra versión que no era del nexo. Para evitar que corra el siguiente:

 
~/.gradle$ find . -type d -name 'group.plugins.awssdk'
./caches/modules-2/files-2.1/group.plugins.awssdk
./caches/modules-2/metadata-2.23/descriptors/group.plugins.awssdk

~/.gradle$ rm -r ./caches/modules-2/files-2.1/group.plugins.awssdk   ./caches/modules-2/metadata-2.23/descriptors/group.plugins.awssdk

Después de eso, Gradle está arrastrando archivos desde nexus.

    
1
2018-11-12 07: 15: 36Z

Ninguna de las soluciones anteriores funcionó para mí.

Si usas IntelliJ, lo que lo resolvió para mí fue simplemente actualizar todos los proyectos de Gradle:

 ingrese la descripción de la imagen aquí

    
1
2019-04-02 07: 33: 11Z

Para Android Studio 3.4.1

Simplemente abra la pestaña de gradle (puede ubicarse a la derecha) y haga clic con el botón derecho en el elemento primario de la lista (debe llamarse "Android"), luego seleccione "Actualizar dependencias".

Esto debería resolver su problema.

    
1
2019-05-30 19: 55: 02Z

Creo que Gradle 2.14.1 soluciona el problema. La respuesta aceptada es correcta, pero hay un error en gradle con las dependencias de actualización. 2.14.1 arregla eso.

Consulte https://discuss.gradle.org /t /refresh-dependencies-should-use-cachechangingmodulesfor-0s /556

    
0
2016-07-21 08: 32: 13Z

Para la mayoría de los casos, simplemente reconstruir el proyecto debería hacer el truco. A veces tienes que ejecutar ./gradlew build --refresh-dependencies como ya han mencionado varias respuestas (toma mucho tiempo, dependiendo de la cantidad de dependencias que tengas). Sin embargo, a veces ninguno de ellos funcionará: la dependencia simplemente no se actualizará. Entonces, puedes hacer esto:

  1. Eliminar la dependencia de su archivo de gradle
  2. Ejecute /depure su proyecto y espere a que falle (por el motivo NonExistingClass)
  3. pulsa "construir proyecto" y espera a que termine con éxito
  4. Ejecutar /depurar una vez más

Esto es ridículo y parece una locura, pero en realidad uso este procedimiento a diario, simplemente porque la dependencia que necesito puede actualizarse docenas de veces y ninguna de las soluciones adecuadas tendría ningún efecto.

    
0
2018-06-20 13: 59: 43Z

Puedes hacerlo de esta manera

 
https://marschall.github.io/2017/04/17/disabling-gradle-cache.html

Para citar desde Deshabilitar el caché de compilación de Gradle

  

La memoria caché de compilación de Gradle puede ser una gran cosa cuando estás construyendo regularmente > proyectos grandes con Gradle. Sin embargo, cuando solo se crean proyectos de código abierto > de vez en cuando, puede volverse grande rápidamente.

     

Para deshabilitar el caché de compilación de Gradle, agregue la siguiente línea a ~/.gradle/gradle.properties

 
org.gradle.caching=false
     

Puedes limpiar el caché existente con

 
rm -rf $HOME/.gradle/caches/
rm -rf $HOME/.gradle/wrapper/
    
0
2018-08-22 06: 49: 46Z

Si está utilizando eclipse y si desea forzar que eclipse vuelva a cargar las dependencias, puede intentar el comando siguiente

 
gradlew clean cleaneclipse build eclipse --refresh-dependencies
    
0
2018-09-20 06: 22: 33Z
  1. ¿Por qué usarías Eclipse? ¡Especialmente en 2018!
    2019-05-08 00: 15: 26Z

Al eliminar todos los cachés, se vuelven a descargar todas las dependencias. así que lleva tanto tiempo y es aburrido esperar otra vez para volver a descargar todas las dependencias.

Como podría ser capaz de resolver esto a continuación.

Simplemente borre los grupos que necesitan actualizarse.

Ej: si queremos actualizar com.user.test group

 
rm -fr ~/.gradle/caches/modules-2/files-2.1/com.user.test/

luego elimine la dependencia de build.gradle y vuélvala a agregar. Entonces se actualizarán las dependencias que queramos.

    
0
2019-02-28 08: 59: 29Z

Debe volver a descargarlo, de modo que puede descargar y reemplazar manualmente el archivo dañado y volver a sincronizar su proyecto. Ir a este lugar C: \users [nombre de usuario] .gradle \wrapper \dist \gradle3.3-all \55gk2rcmfc6p2dg9u9ohc3hw9 \gradle-3.3-all.zip Aquí elimine gradle3.3allzip y reemplácelo descargándolo nuevamente desde este sitio https://services.gradle.org/distributions/ Encuentra el mismo archivo y descárgalo y pégalo en esa ubicación Luego sincroniza tu proyecto. Espero que funcione para ti también.

    
- 6
2017-06-15 05: 10: 08Z
fuente colocada aquí