Как заставить gradle повторно загружать зависимости?

Как я могу сказать gradle для замены загрузок из репозиториев?

+425
источник поделиться
11 ответов

Как правило, вы можете обновлять зависимости в кеше с параметром командной строки - обновления-зависимости. Вы также можете удалить кешированные файлы в разделе ~/.gradle/caches. При следующей сборке Gradle попытается загрузить их снова.

Каков ваш конкретный вариант использования? Используете ли вы версии динамической зависимости или версии SNAPSHOT?


В Unix-системах вы можете удалить все существующие артефакты (артефакты и метаданные) Gradle, загрузив с помощью:

rm -rf $HOME/.gradle/caches/
+552
источник

Если вы используете последнюю версию Gradle, вы можете использовать опцию --refresh-dependencies.

./gradlew build --refresh-dependencies

вы можете обратиться к руководству gradle.

Параметр -refresh-dependencies сообщает gradle игнорировать все кэшированные записи для разрешенных модулей и артефактов. Будет выполнено новое решение для всех настроенных репозиториев, с динамическими версиями, пересчитанными, обновленные модули, и загружены артефакты.

Gradle руководство

+279
источник
другие ответы

Связанные вопросы


Похожие вопросы

Вы можете сказать Gradle повторно загрузить некоторые зависимости в сборке script, отметив зависимость как "изменение". Gradle будет проверять обновления каждые 24 часа, но это может быть настроено с использованием DSL ResolutionStrategy. Я считаю полезным использовать это для сборки SNAPSHOT или NIGHTLY.

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

Expanded:

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

Сгущенное:

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

Я нашел это решение в этом форуме.

+217
источник

Для MAC

./gradlew build --refresh-dependencies

Для Windows

gradlew build --refresh-dependencies

+26
источник

Для Windows..., чтобы сделать gradle перегрузкой определенных зависимостей:

  • удалите зависимостей, которые вы хотите повторно загрузить из каталога ниже:

    C:\Users\[username]\.gradle\caches\modules-2\files-2.1
    
  • удалите все каталоги метаданных по пути:

    C:\Users\[username]\.gradle\caches\modules-2\metadata-*
    
  • запустите gradle build (или gradlew build при использовании оболочки gradle) в корневом каталоге проекта.

note: числа в указанных выше дорожках файлов могут отличаться для вас.

+12
источник

Можно удалить папку с кешированными банками.

В моем случае на Mac библиотека была кэширована по пути

"/Users/my_name/.gradle/кэширует/модули-2/файлы-2.1/кэшируется библиотека удаляемого"

Я удалил папку кэшированной библиотеки ( "кешированная библиотека для удаления" в приведенном выше примере), удалил папку сборки моего проекта и скомпилировал ее снова. Затем была загружена новая библиотека.

+9
источник

Вместо удаления всего кэша gradle, как предлагают некоторые ответы, вы можете удалить кеш для определенной группы или идентификатора артефакта. Я добавил следующую функцию к .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
}

Использование:

$ deleteGradleCache com.android.support

Затем, в следующей сборке или при повторной синхронизации, gradle будет повторно загружать зависимости.

+7
источник

удалить этот каталог:

C:\Users\[username]\.gradle
+3
источник

Я думаю, что gradle 2.14.1 исправляет проблему. Принятый ответ правильный, но есть ошибка в gradle с -refresh-dependencies. 2.14.1 исправляет это.

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

0
источник

Это сработало для меня. Убедитесь, что Gradle не установлен в автономный режим, сняв флажок в меню Файл > Настройки > Gradle > Работа в автономном режиме.

Добавьте это на верхний уровень вашего build.gradle, хорошо иметь над зависимостями

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

}

Я убедился, что мои зависимости написаны так:

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

Затем я открываю панель Gradle в Android Studio и нажимаю кнопку стрелок синего круга. Я всегда вижу, что мои обновления получают новую свежую копию.

0
источник

Вам нужно перезагрузить его, чтобы вы могли вручную загрузить и заменить поврежденный файл и снова синхронизировать свой проект. Перейти к этому местоположению C:\Users [имя пользователя].gradle\обертка\расстояние\gradle3.3-все\55gk2rcmfc6p2dg9u9ohc3hw9\gradle -3.3-all.zip Здесь удалите gradle3.3allzip и замените его, загрузив снова с этого сайта https://services.gradle.org/distributions/ Найдите тот же файл и загрузите его в это место Затем синхронизируйте свой проект. Надеюсь, это сработает и для вас.

-5
источник

Посмотрите другие вопросы по метке или Задайте вопрос