Как я могу сказать gradle для замены загрузок из репозиториев?
Как заставить gradle повторно загружать зависимости?
Ответ 1
Как правило, вы можете обновлять зависимости в кеше с параметром командной строки - обновления-зависимости. Вы также можете удалить кешированные файлы в разделе ~/.gradle/caches
. При следующей сборке Gradle попытается загрузить их снова.
Каков ваш конкретный вариант использования? Используете ли вы версии динамической зависимости или версии SNAPSHOT?
В Unix-системах вы можете удалить все существующие артефакты (артефакты и метаданные) Gradle, загрузив с помощью:
rm -rf $HOME/.gradle/caches/
Ответ 2
Если вы используете последнюю версию Gradle, вы можете использовать опцию --refresh-dependencies.
./gradlew build --refresh-dependencies
вы можете обратиться к руководству gradle.
Параметр -refresh-dependencies сообщает gradle игнорировать все кэшированные записи для разрешенных модулей и артефактов. Будет выполнено новое решение для всех настроенных репозиториев, с динамическими версиями, пересчитанными, обновленные модули, и загружены артефакты.
Ответ 3
Вы можете сказать 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 }
Я нашел это решение в этом форуме.
Ответ 4
Для MAC
./gradlew build --refresh-dependencies
Для Windows
gradlew build --refresh-dependencies
Ответ 5
Для 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: числа в указанных выше дорожках файлов могут отличаться для вас.
Ответ 6
Можно удалить папку с кешированными банками.
В моем случае на Mac библиотека была кэширована по пути
"/Users/my_name/.gradle/кэширует/модули-2/файлы-2.1/кэшируется библиотека удаляемого"
Я удалил папку кэшированной библиотеки ( "кешированная библиотека для удаления" в приведенном выше примере), удалил папку сборки моего проекта и скомпилировал ее снова. Затем была загружена новая библиотека.
Ответ 7
Вместо удаления всего кэша 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 будет повторно загружать зависимости.
Ответ 8
удалить этот каталог:
C:\Users\[username]\.gradle
Ответ 9
Я думаю, что gradle 2.14.1 исправляет проблему. Принятый ответ правильный, но есть ошибка в gradle с -refresh-dependencies. 2.14.1 исправляет это.
См. https://discuss.gradle.org/t/refresh-dependencies-should-use-cachechangingmodulesfor-0s/556
Ответ 10
Это сработало для меня. Убедитесь, что Gradle не установлен в автономный режим, сняв флажок в меню Файл > Настройки > Gradle > Работа в автономном режиме.
Добавьте это на верхний уровень вашего build.gradle, хорошо иметь над зависимостями
configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
Я убедился, что мои зависимости написаны так:
implementation('com.github.juanmendez:ThatDependency:ThatBranch-SNAPSHOT') {
changing = true
}
Затем я открываю панель Gradle в Android Studio и нажимаю кнопку стрелок синего круга. Я всегда вижу, что мои обновления получают новую свежую копию.
Ответ 11
Вам нужно перезагрузить его, чтобы вы могли вручную загрузить и заменить поврежденный файл и снова синхронизировать свой проект. Перейти к этому местоположению C:\Users [имя пользователя].gradle\обертка\расстояние\gradle3.3-все\55gk2rcmfc6p2dg9u9ohc3hw9\gradle -3.3-all.zip Здесь удалите gradle3.3allzip и замените его, загрузив снова с этого сайта https://services.gradle.org/distributions/ Найдите тот же файл и загрузите его в это место Затем синхронизируйте свой проект. Надеюсь, это сработает и для вас.