¿Cómo puedo decirle a Gradle que vuelva a descargar las dependencias de los repositorios?
¿Cómo puedo decirle a Gradle que vuelva a descargar las dependencias de los repositorios?
Respuestas:
Generalmente, puede actualizar las dependencias en su caché con la opción de línea de comando --refresh-dependencies . También puede eliminar los archivos en caché en ~/.gradle/caches
. Con la próxima compilación, Gradle intentaría descargarlos nuevamente.
¿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/
find $HOME/.gradle/caches/ -name "*LIBRARY_NAME*" -exec rm -r {} \;
Si está utilizando una versión reciente de Gradle, puede usar la opción --refresh-dependencies.
./gradlew build --refresh-dependencies
puedes consultar el manual de Gradle .
La opción --refresh-dependencies le dice a Gradle que ignore todas las entradas en caché para módulos resueltos y artefactos. Se realizará una nueva resolución en todos los repositorios configurados, con versiones dinámicas recalculadas, módulos actualizados y artefactos descargados.
Puede decirle a Gradle que vuelva a descargar algunas dependencias en el script de compilación marcando la dependencia como 'cambiante'. A continuación, Gradle buscará actualizaciones cada 24 horas, pero esto se puede configurar mediante la resolución DSL de StrategyStrategy. Me resulta útil usar esto para las compilaciones SNAPSHOT o NIGHTLY.
configurations.all {
// Check for updates every build
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
Expandido:
dependencies {
implementation group: "group", name: "projectA", version: "1.1-SNAPSHOT", changing: true
}
Condensado:
implementation('group:projectA:1.1-SNAPSHOT') { changing = true }
Encontré esta solución en este hilo del foro .
cacheChangingModulesFor
es la clave, changing: true
es opcional porque está implícito -SNAPSHOT
, es posible usar la abreviatura aquí: compile 'group:projectA:1.1-SNAPSHOT'
debido a la implicación anterior. También se puede restringir el resolutionStrategy a uno config: configurations.compile.resolutionS...
.
compile 'com.burrowsapps:ads:1.0:true'
?
Para Mac
./gradlew build --refresh-dependencies
Para ventanas
gradlew build --refresh-dependencies
También puede intentar gradlew assembleDevelopmentDebug --refresh-dependencies
gradle wrapper
tarea; incluso puede generar una envoltura usando otra envoltura de Gradle:gradlew wrapper
Para Windows ... para hacer que Gradle vuelva a descargar dependencias específicas :
elimine las dependencias que desea volver a descargar del directorio siguiente:
C:\Users\%USERNAME%\.gradle\caches\modules-2\files-2.1
elimine todos los directorios de metadatos en la ruta:
C:\Users\%USERNAME%\.gradle\caches\modules-2\metadata-*
ejecutar gradle build
(o gradlew build
si está usando gradle wrapper) en el directorio raíz del proyecto.
nota: los números en las rutas de archivo anteriores pueden ser diferentes para usted.
Se puede eliminar la carpeta con tarros en caché.
En mi caso, en Mac, la biblioteca se almacenó en caché 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 se descargó entonces.
En lugar de eliminar todo el caché de gradle, como sugieren algunas respuestas aquí, puede eliminar el caché para un grupo específico o identificación 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 próxima compilación o si vuelve a sincronizar, Gradle volverá a descargar las dependencias.
Hay 2 formas de hacerlo:
Usando la opción --refresh-dependencies :
./gradlew build --refresh-dependencies
Breve explicación : la opción -fresh-dependencies le dice a Gradle que ignore todas las entradas en caché para módulos resueltos y artefactos.
Explicacion larga
Usar eliminar: cuando eliminas cachés
rm -rf $HOME/.gradle/caches/
Simplemente limpie todos los frascos almacenados 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 publique otro SNAPSHOT y sea parte de su árbol de dependencia, se enfrentará nuevamente frente a la opción de actualizar o purgar las cachés.
Esto funcionó para mí. Asegúrese de que Gradle no esté configurado como fuera de línea desmarcando el botón Archivo> Configuración> Gradle> Trabajo sin conexión.
Agregue esto al nivel superior de su build.gradle, es bueno tener dependencias anteriores
configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
Me aseguré de que mis dependencias se escriban así:
implementation('com.github.juanmendez:ThatDependency:ThatBranch-SNAPSHOT') {
changing = true
}
A partir de entonces, abro el panel de Gradle en Android Studio y hago clic en el botón de flechas de círculo azul. Siempre puedo ver mis actualizaciones obteniendo una nueva copia nueva.
Para Android Studio 3.4.1
Simplemente abra la pestaña gradle (puede ubicarse a la derecha) y haga clic derecho en el padre en la lista (debería llamarse "Android"), luego seleccione "Actualizar dependencias".
Esto debería resolver su problema.
Mb Llego demasiado tarde, sin embargo, mi solución es para un único repositorio. Creo que eliminar ~ / .gradle / * es exagerado. El problema con el que me topé fue que estaba eliminando el directorio donde estaban las fuentes y Gradle obtenía otra versión que no era de nexus. Para evitar eso ejecuto 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.
Para actualizar la versión 'lanzamiento' en caché, la única opción es borrar el caché local.
rm -rf $HOME/.gradle/caches/
Para actualizar la versión 'instantánea' en caché puede:
./gradlew build --refresh-dependencies
Al eliminar todas las cachés, se vuelven a descargar todas las dependencias. por lo tanto, lleva tanto tiempo y es aburrido esperar nuevamente para volver a descargar todas las dependencias.
¿Cómo podría ser capaz de resolver esto a continuación?
Simplemente elimine los grupos que deben actualizarse.
Ej: si queremos actualizar el grupo com.user.test
rm -fr ~/.gradle/caches/modules-2/files-2.1/com.user.test/
luego elimine la dependencia de build.gradle y vuelva a agregarla. entonces refrescará las dependencias de lo que queramos.
Creo que Gradle 2.14.1 soluciona el problema. La respuesta aceptada es correcta, pero hay un error en gradle con –refresh-dependencies. 2.14.1 corrige eso.
Ver https://discuss.gradle.org/t/refresh-dependencies-should-use-cachechangingmodulesfor-0s/556
eliminar este directorio:
C:\Users\[username]\.gradle
Para la mayoría de los casos, simplemente reconstruir el proyecto debería ser suficiente. A veces tiene que ejecutar ./gradlew build --refresh-dependencies
ya que varias respuestas ya han mencionado (lleva mucho tiempo, dependiendo de la cantidad de dependencias que tenga). Sin embargo, a veces ninguno de esos funcionará: la dependencia simplemente no se actualizará. Entonces, puedes hacer esto:
NonExistingClass
razón)Esto es ridículo y parece una locura, pero en realidad uso este procedimiento a diario, simplemente porque la dependencia que necesito se puede actualizar docenas de veces y ninguna de las soluciones adecuadas tendría ningún efecto.
Puedes hacerlo así
https://marschall.github.io/2017/04/17/disabling-gradle-cache.html
Para citar de Desactivar la caché de compilación de Gradle
El caché de compilación de Gradle puede ser una gran cosa cuando regularmente construye> proyectos grandes con Gradle. Sin embargo, cuando solo ocasionalmente construye proyectos de código abierto, puede hacerse rápidamente grande.
Para deshabilitar la caché de compilación de Gradle, agregue la siguiente línea a
~/.gradle/gradle.properties
org.gradle.caching=false
Puede limpiar el caché existente con
rm -rf $HOME/.gradle/caches/ rm -rf $HOME/.gradle/wrapper/
Si está utilizando eclipse y desea forzar eclipse para volver a cargar las dependencias, puede probar el siguiente comando
gradlew clean cleaneclipse build eclipse --refresh-dependencies
Solo funciona una eliminación manual de la dependencia específica en la carpeta de caché ... un artefacto creado por un colega en el repositorio empresarial.
En mi caso, ninguno de los anteriores funcionó, lo que hice fue:
build.gradle
, comentando las dependencias relacionadas con las importaciones no resueltas que tuveEntonces mis importaciones se resolvieron correctamente nuevamente.
Debe volver a descargarlo, para que pueda descargar y reemplazar manualmente el archivo dañado y volver a sincronizar su proyecto. Vaya a esta ubicación C: \ users [nombre de usuario] .gradle \ wrapper \ dist \ gradle3.3-all \ 55gk2rcmfc6p2dg9u9ohc3hw9 \ gradle-3.3-all.zip Aquí elimine gradle3.3allzip y reemplácelo descargando nuevamente desde este sitio https: / /services.gradle.org/distributions/ Encuentre el mismo archivo y descárguelo y péguelo en esa ubicación. Luego sincronice su proyecto. Espero que funcione para usted también.