Jak zmusić gradle do ponownego pobrania zależności?

Jak mogę polecić gradle ' owi ponowne pobranie zależności z repozytoriów?

 537
Author: fedor.belov, 2012-11-26

16 answers

Ogólnie można odświeżyć zależności w pamięci podręcznej za pomocą opcji linii poleceń --refresh-dependencies. Możesz również usunąć Pliki z pamięci podręcznej w sekcji ~/.gradle/caches. Przy następnej kompilacji Gradle będzie próbował pobrać je ponownie.

Jaki jest twój konkretny przypadek użycia? Czy używasz dynamicznych wersji zależności lub wersji migawkowych?


W systemach uniksowych możesz usunąć wszystkie istniejące artefakty (artefakty i metadane) pobrane przez Gradle za pomocą:

rm -rf $HOME/.gradle/caches/
 664
Author: Benjamin Muschko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-16 20:43:11

Jeśli używasz najnowszej wersji Gradle, możesz użyć opcji -- refresh-dependencies.

./gradlew build --refresh-dependencies

Możesz zapoznać się z instrukcją Gradle .

Opcja --refresh-dependencies każe Gradle ignorować wszystkie buforowane wpisy dla rozwiązanych modułów i artefaktów. zostanie wykonane nowe rozwiązanie dla wszystkich skonfigurowanych repozytoriów, z przeliczonymi dynamicznymi wersjami, odświeżonymi modułami i pobranymi artefaktami.

 411
Author: Naggi nagase yoshi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-01 17:46:14

Możesz polecić Gradle 'owi ponowne pobranie pewnych zależności w skrypcie budowania, oznaczając zależność jako 'zmieniającą'. Gradle będzie sprawdzać aktualizacje co 24 godziny, ale można to skonfigurować za pomocą resolutionStrategy DSL. Uważam, że przydatne jest użycie tego do migawek lub nocnych kompilacji.

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

Rozszerzony:

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

Skondensowany:

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

Znalazłem to rozwiązanie w tym wątku na forum.

 257
Author: Umi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-29 06:50:14

Dla komputerów MAC

./gradlew build --refresh-dependencies

Dla Windows

gradlew build --refresh-dependencies

Można również spróbować gradlew assembleDevelopmentDebug --refresh-dependencies

 46
Author: Ali,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-14 17:31:19

Dla Windows ... w celu ponownego pobrania gradle specyficzne zależności:

  1. Usuń zależności, które chcesz ponownie pobrać z katalogu poniżej:

    C:\Users\[username]\.gradle\caches\modules-2\files-2.1
    
  2. Usuń wszystkie metadane katalogi w ścieżce:

    C:\Users\[username]\.gradle\caches\modules-2\metadata-*
    
  3. Uruchom gradle build (lub gradlew build Jeśli używasz Gradle wrapper) w katalogu głównym projektu.

UWAGA: liczby w ścieżkach plików powyżej mogą być różne dla ty.

 21
Author: Eric,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-25 19:58:50

Można usunąć folder z buforowanymi słoikami.

W moim przypadku, na Mac biblioteka była buforowana w path:

/Users/MY_NAME/.gradle/caches/modules-2/files-2.1/cached-library-to-remove

Usunąłem buforowany folder biblioteki ("buforowana-biblioteka-do-usunięcia" w powyższym przykładzie), usunąłem folder budowania mojego projektu i ponownie skompilowałem. Pobrano wtedy świeżą bibliotekę.

 14
Author: Farhan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-20 04:16:16

Zamiast usuwać całą pamięć podręczną gradle, jak sugerują niektóre odpowiedzi, możesz usunąć pamięć podręczną dla określonej grupy lub identyfikatora artefaktu. Dodałem do mojego .bash_profile następującą funkcję:

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
}

Użycie:

$ deleteGradleCache com.android.support

Następnie, przy następnej kompilacji lub jeśli ponownie zsynchronizujesz, gradle ponownie pobierze zależności.

 9
Author: Jared Rummler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-22 18:12:17

Są na to dwa sposoby:

  1. Używanie opcji wiersza poleceń do odświeżania zależności cashe.
  2. możesz usunąć lokalny bufor, gdzie artefasty są buforami przez Gradle i trigger build

Using --refresh-dependencies option:

./gradlew build --refresh-dependencies

Krótkie wyjaśnienie --refresh-dependencies opcja każe Gradle ignorować wszystkie buforowane wpisy dla rozwiązanych modułów i artefaktów.

Long explanation

  • z - refresh-dependencies ' Gradle zawsze trafi na zdalny serwer, aby sprawdzić zaktualizowane artefakty: jednak Gradle uniknie pobierania pliku, w którym ten sam plik już istnieje w pamięci podręcznej.
    • First Gradle wyśle żądanie HEAD i sprawdzi, czy serwer zgłosi plik jako niezmieniony od ostatniego czasu(jeśli' Content-length 'i' last-modified ' są bez zmian). W tym przypadku pojawi się komunikat: "buforowany zasób jest aktualny (lastmodified: {})."
    • Następny Gradle będzie określ zdalną sumę kontrolną, jeśli to możliwe (albo z żądania głównego lub pobierając a '.Plik sha1).. Jeśli ta suma kontrolna pasuje do innego pliku już pobranego (z dowolnego repozytorium), Gradle po prostu skopiuje plik w pamięci podręcznej, zamiast pobierać ponownie. W tym przypadku otrzymasz komunikat: "" znaleziony lokalnie dostępny zasób z pasującą sumą kontrolną: [{}, {}]".

Using delete: Po usunięciu pamięci podręcznej

rm -rf $HOME/.gradle/caches/

Po prostu wyczyść wszystkie słoiki z pamięci podręcznej a sha1 i Gradle są w sytuacji, w której na komputerze nie ma artefaktów i trzeba wszystko ściągnąć. Tak, będzie działać w 100% po raz pierwszy, ale kiedy kolejna migawka zostanie wydana i będzie częścią drzewa zależności, ponownie staniesz przed wyborem odświeżenia lub wyczyszczenia pamięci podręcznej.

 3
Author: Xelian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-05 05:31:01

Usuń ten katalog:

C:\Users\[username]\.gradle
 2
Author: farhang67,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-12 18:56:17

To mi pomogło. Upewnij się, że Gradle nie jest ustawiony na offline, odznaczając przycisk W File>Settings>Gradle > offline Work.

Dodaj to do najwyższego poziomu swojej kompilacji.gradle, miło mieć powyższe zależności

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

Upewniłem się, że moje zależności są napisane tak:

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

Następnie otwieram Panel Gradle w Android Studio i klikam niebieski przycisk strzałek kółka. Zawsze widzę, że moje aktualizacje dostają nową świeżą kopię.

 2
Author: Juan Mendez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-05 14:22:00

Myślę, że gradle 2.14.1 rozwiązuje problem. Zaakceptowana odpowiedź jest poprawna, ale jest błąd w gradle z –refresh-dependencies. 2.14.1 naprawia to.

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

 0
Author: Jacques Koorts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-21 08:32:13

W większości przypadków po prostu przebudowa projektu powinna załatwić sprawę. Czasami trzeba uruchomić ./gradlew build --refresh-dependencies, jak już wspomniano kilka odpowiedzi(zajmuje to dużo czasu, w zależności od tego, ile zależności masz). Jak zawsze, czasami nic z nich nie zadziała: zależność po prostu nie zostanie zaktualizowana. Następnie możesz to zrobić:

  1. Usuń zależność z pliku gradle
  2. Uruchom / Debuguj swój projekt i poczekaj, aż się nie powiedzie (z NonExistingClass powodu)
  3. Hit " build projekt " i czekać, aż zakończy się pomyślnie
  4. Uruchom / Debuguj jeszcze raz

To jest śmieszne i wydaje się szaleństwem, ale faktycznie używam tej procedury codziennie, po prostu dlatego, że zależność, której potrzebuję, może być aktualizowana dziesiątki razy i Żadne z odpowiednich rozwiązań nie przyniosłoby żadnego efektu.

 0
Author: egorikem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-20 13:59:43

Możesz to zrobić tak

https://marschall.github.io/2017/04/17/disabling-gradle-cache.html

Cytuję z wyłączenie pamięci podręcznej Gradle Build

Gradle build cache może być świetną rzeczą, gdy regularnie budujesz >duże projekty z Gradle. Jednak gdy tylko od czasu do czasu budujemy open source > projekty, może on szybko stać się Duży.

Aby wyłączyć Gradle build cache dodaj następującą linię do ~/.gradle/gradle.properties

org.gradle.caching=false

Możesz wyczyścić istniejącą pamięć podręczną za pomocą

rm -rf $HOME/.gradle/caches/
rm -rf $HOME/.gradle/wrapper/
 0
Author: wuqilong,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-22 06:49:46

Jeśli używasz eclipse i chcesz zmusić eclipse do ponownego załadowania zależności możesz spróbować poniżej polecenia

gradlew clean cleaneclipse build eclipse --refresh-dependencies
 0
Author: ULLAS K,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-20 06:22:33

Dla tych, którzy zastanawiają się, gdzie uruchomić polecenia gradle:

Otwórz android studio -- > kliknij Terminal(znajdziesz go w bazie android studio)-- > narzędzie poleceń otworzy - - - > wpisz swoje polecenie (gradlew build --refresh-dependencies)

 0
Author: kgandroid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-05 08:13:15

Musisz go ponownie pobrać, więc możesz ręcznie pobrać i zastąpić uszkodzony plik i ponownie zsynchronizować projekt . Przejdź do tej lokalizacji C:\users [nazwa użytkownika].gradle\wrapper\dist\gradle3.3-all\55gk2rcmfc6p2dg9u9ohc3hw9 \ gradle-3.3-all.zip Tutaj Usuń gradle3. 3allzip i zastąp go, pobierając ponownie z tej strony https://services.gradle.org/distributions/ Znajdź ten sam plik i pobierz go i wklej do tej lokalizacji Następnie zsynchronizuj swój projekt. Mam nadzieję, że to działa dla Ciebie też.

 -6
Author: Rahul Gupta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-15 05:10:08