Как я могу сказать gradle для повторной загрузки зависимостей из репозиториев?
742
Как правило, вы можете обновить зависимости в вашем кэше с помощью параметра командной строки --refresh-dependencies . Вы также можете удалить кэшированные файлы в ~/.gradle/caches
. При следующей сборке Gradle попытается загрузить их снова.
Каков ваш конкретный вариант использования? Используете ли вы динамические версии зависимостей или версии SNAPSHOT?
В системах Unix вы можете удалить все существующие артефакты (артефакты и метаданные), загруженные Gradle с помощью:
rm -rf $HOME/.gradle/caches/
find $HOME/.gradle/caches/ -name "*LIBRARY_NAME*" -exec rm -r {} \;
Если вы используете последнюю версию Gradle, вы можете использовать опцию --refresh-dependencies.
Вы можете обратиться к руководству Gradle .
источник
Вы можете указать Gradle повторно загрузить некоторые зависимости в сценарии сборки, пометив зависимость как «изменяющуюся». Gradle будет проверять наличие обновлений каждые 24 часа, но это можно настроить с помощью ResolutionStrategy DSL. Я считаю полезным использовать это для SNAPSHOT или NIGHTLY.
Expanded:
Сгущенное:
Я нашел это решение в этой ветке форума .
источник
cacheChangingModulesFor
является ключом,changing: true
является необязательным, потому что подразумевается-SNAPSHOT
, здесь можно использовать сокращение:compile 'group:projectA:1.1-SNAPSHOT'
из-за вышеупомянутого значения. Можно также ограничить resolutionStrategy к одной конфигурации:configurations.compile.resolutionS...
.compile 'com.burrowsapps:ads:1.0:true'
?Для MAC
./gradlew build --refresh-dependencies
Для Windows
gradlew build --refresh-dependencies
Можно также попробовать
gradlew assembleDevelopmentDebug --refresh-dependencies
источник
gradle wrapper
задачи; Вы даже можете создать оболочку, используя другую оболочку Gradle:gradlew wrapper
Для Windows ... для того, чтобы заставить gradle повторно загружать определенные зависимости:
удалите зависимости, которые вы хотите повторно загрузить из каталога ниже:
удалить все каталоги метаданных по пути:
запустить
gradle build
(или,gradlew build
если используется gradle wrapper) в корневом каталоге проекта.примечание: числа в путях к файлам выше могут отличаться для вас.
источник
Можно удалить папку с кешированными банками.
В моем случае на Mac библиотека кэшировалась по пути:
/Users/MY_NAME/.gradle/caches/modules-2/files-2.1/cached-library-to-remove
Я удалил папку с кэшированной библиотекой («cached-library-to-remove» в приведенном выше примере), удалил папку сборки моего проекта и снова скомпилировал. Свежая библиотека была загружена тогда.
источник
Вместо удаления всего кэша Gradle, как предлагают некоторые ответы здесь, вы можете удалить кэш для определенной группы или идентификатора артефакта. Я добавил следующую функцию в мой
.bash_profile
:Применение:
Затем при следующей сборке или при повторной синхронизации gradle повторно загрузит зависимости.
источник
Есть 2 способа сделать это:
Используя параметр --refresh-dependencies :
Краткое объяснение --refresh-dependencies опция указывает Gradle игнорировать все кэшированные записи для разрешенных модулей и артефактов.
Долгое объяснение
Использование delete: при удалении кешей
Вы просто очищаете все кэшированные банки и суммы sha1, и Gradle находится в ситуации, когда на вашем компьютере нет артефактов, и он должен загрузить все. Да, он будет работать на 100% в первый раз, но когда будет выпущен другой SNAPSHOT, и он станет частью вашего дерева зависимостей, вам снова придется столкнуться с выбором обновления или очистки кешей.
источник
Это сработало для меня. Убедитесь, что Gradle не переведен в автономный режим, сняв отметку с кнопки «Файл»> «Настройки»> «Gradle»> «Автономная работа».
Добавьте это на верхний уровень вашего build.gradle, приятно иметь вышеуказанные зависимости
Я убедился, что мои зависимости написаны так:
После этого я открываю панель Gradle в Android Studio и нажимаю кнопку со стрелками синего круга. Я всегда вижу, как мои обновления получают новую свежую копию.
источник
Ни одно из приведенных выше решений не помогло мне.
Если вы используете IntelliJ, я решил просто обновить все проекты Gradle:
источник
Для тех, кому интересно, где запускать команды gradle:
gradlew build --refresh-dependencies
источник
Для Android Studio 3.4.1
Просто откройте вкладку Gradle (может быть расположена справа) и щелкните правой кнопкой мыши на родительском элементе в списке (должен называться «Android»), затем выберите «Обновить зависимости».
Это должно решить вашу проблему.
источник
Я слишком поздно, но мое решение для одного хранилища. Я думаю, что удаление ~ / .gradle / * излишне. Проблема, с которой я столкнулся, заключалась в том, что я удалял каталог, в котором находились источники, а Gradle получал другую версию, а не от Nexus. Чтобы избежать этого, я запускаю следующее:
После этого Gradle перетаскивает файлы из Nexus.
источник
Чтобы обновить кешированную «релизную» версию, единственный вариант - очистить локальный кеш.
Чтобы обновить кэшированную версию «снимка», вы можете:
источник
Удаление всех кешей заставляет снова загрузить все зависимости. так что это заняло так много времени и это скучно ждать снова, чтобы снова загрузить все зависимости.
Как только я смогу решить эту проблему ниже.
Просто удалите группы, которые необходимо обновить.
Пример: если мы хотим обновить группу com.user.test
затем удалите зависимость из build.gradle и повторно добавьте ее. тогда он обновит зависимости, что мы хотим.
источник
Я думаю, что Gradle 2.14.1 решает проблему. Принятый ответ правильный, но в gradle есть ошибка с –refresh-dependencies. 2.14.1 исправляет это.
См. Https://discuss.gradle.org/t/refresh-dependencies-should-use-cachechangingmodulesfor-0s/556.
источник
удалить этот каталог:
источник
В большинстве случаев достаточно просто перестроить проект. Иногда вам нужно запустить, так
./gradlew build --refresh-dependencies
как несколько ответов уже упоминалось (это занимает много времени, в зависимости от того, сколько у вас зависимостей). Однако иногда ни один из них не будет работать: зависимость не будет обновлена. Затем вы можете сделать это:NonExistingClass
указанием причины)Это смешно и выглядит как безумие, но я на самом деле использую эту процедуру ежедневно, просто потому, что нужная мне зависимость может обновляться десятки раз, и ни одно из адекватных решений не будет иметь никакого эффекта.
источник
Вы можете сделать это так
Цитировать из Отключение кэша сборки Gradle
источник
Если вы используете eclipse и если вы хотите, чтобы eclipse перезагружал зависимости, попробуйте команду ниже
источник
Работает только ручное удаление определенной зависимости в папке кеша ... артефакт, созданный коллегой по корпоративному репо.
источник
В моем случае ничего из вышеперечисленного не сработало, я сделал следующее:
build.gradle
, комментируя зависимости, связанные с неразрешенным импортомТогда мой импорт снова был правильно разрешен.
источник
Вам необходимо повторно загрузить его, чтобы вы могли вручную загрузить и заменить поврежденный файл и снова синхронизировать ваш проект. Перейдите по этому адресу C: \ users [username] .gradle \ wrapper \ dist \ gradle3.3-all \ 55gk2rcmfc6p2dg9u9ohc3hw9 \ gradle-3.3-all.zip Здесь удалите gradle3.3allzip и замените его, загрузив снова с этого сайта https: / /services.gradle.org/distributions/ Найдите тот же файл, загрузите и вставьте его в это место. Затем синхронизируйте ваш проект. Надеюсь, это работает и для вас.
источник