¿Cómo puedo obligar a Gradle a volver a descargar las dependencias?

Resuelto fedor.belov asked hace 11 años • 26 respuestas

¿Cómo puedo decirle a Gradle que vuelva a descargar las dependencias de los repositorios?

fedor.belov avatar Nov 26 '12 19:11 fedor.belov
Aceptado

Opción 1: usar --refresh-dependenciesbandera

Generalmente, puede actualizar las dependencias en su caché con la opción de línea de comando --refresh-dependencies .

Tenga en cuenta que --refresh-dependencies no siempre volverá a descargar todos los artefactos; utilizará copias existentes si coinciden con lo que existe en el repositorio. De la Guía del usuario de Gradle, actualizando dependencias :

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 versiones dinámicas recalculadas, módulos actualizados y artefactos descargados. Sin embargo, cuando sea posible, Gradle comprobará si los artefactos descargados anteriormente son válidos antes de volver a descargarlos. Esto se hace comparando los valores SHA1 publicados en el repositorio con los valores SHA1 de los artefactos descargados existentes.

[...]

Es un error común pensar que el uso de --refresh-dependencies forzará la descarga de dependencias. Este no es el caso: Gradle solo realizará lo estrictamente necesario para actualizar las dependencias dinámicas. Esto puede implicar la descarga de nuevos listados o archivos de metadatos, o incluso artefactos, pero si nada cambió, el impacto es mínimo.

Opción 2: Eliminar~/.gradle/caches

También puede eliminar los archivos almacenados en caché (artefactos y metadatos) en ~/.gradle/caches. Con la próxima compilación, Gradle intentará descargarlos nuevamente.

En sistemas *nix (Linux, macOS, ...), puede ejecutar este comando:

rm -rf $HOME/.gradle/caches/

Después de hacer esto, es posible que también necesites eliminar el Gradle Daemon en ejecución:

./gradlew --stop 
Benjamin Muschko avatar Nov 26 '2012 15:11 Benjamin Muschko

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 versiones dinámicas recalculadas, módulos actualizados y artefactos descargados.

Naga avatar Aug 05 '2015 12:08 Naga

Puedes indicarle a Gradle que vuelva a descargar algunas dependencias en el script de compilación marcando la dependencia como "cambiando". Gradle luego buscará actualizaciones cada 24 horas, pero esto se puede configurar usando la resoluciónStrategy DSL. Me resulta útil usar esto para compilaciones INSTANTÁNEAS o NOCTURNAS.

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 .

Umi avatar Feb 11 '2013 01:02 Umi