Jak mogę powiedzieć stopniowi, aby ponownie pobierał zależności z repozytoriów?
740
Zasadniczo można odświeżyć zależności w pamięci podręcznej za pomocą opcji wiersza polecenia --refresh-dependencies . Możesz również usunąć buforowane pliki w obszarze ~/.gradle/caches
. Przy następnej kompilacji Gradle będzie próbował pobrać je ponownie.
Jaki jest twój konkretny przypadek użycia? Czy korzystasz z wersji dynamicznej zależności lub wersji SNAPSHOT?
W systemach uniksowych możesz usunąć wszystkie istniejące artefakty (artefakty i metadane), które Gradle pobrał, używając:
rm -rf $HOME/.gradle/caches/
find $HOME/.gradle/caches/ -name "*LIBRARY_NAME*" -exec rm -r {} \;
Jeśli używasz najnowszej wersji Gradle, możesz użyć opcji --refresh-dependencies.
możesz zapoznać się z instrukcją Gradle .
źródło
Możesz powiedzieć Gradle'owi, aby ponownie pobrał niektóre zależności ze skryptu kompilacji, oznaczając zależność jako „zmieniającą się”. Następnie Gradle będzie sprawdzać dostępność aktualizacji co 24 godziny, ale można to skonfigurować za pomocą rozdzielczości DSL strategii. Uważam, że przydatne jest użycie tego do kompilacji SNAPSHOT lub NIGHTLY.
Rozszerzony:
Skondensowany:
Znalazłem to rozwiązanie w tym wątku na forum .
źródło
cacheChangingModulesFor
jest kluczem,changing: true
jest opcjonalny, ponieważ implikuje-SNAPSHOT
to, możliwe jest użycie skrótu tutaj: zcompile 'group:projectA:1.1-SNAPSHOT'
powodu powyższej implikacji. Można też ograniczyć resolutionStrategy jednej config:configurations.compile.resolutionS...
.compile 'com.burrowsapps:ads:1.0:true'
?Dla Maca
./gradlew build --refresh-dependencies
Dla Windowsa
gradlew build --refresh-dependencies
Można także spróbować
gradlew assembleDevelopmentDebug --refresh-dependencies
źródło
gradle wrapper
zadania; możesz nawet wygenerować opakowanie za pomocą innego opakowania Gradle:gradlew wrapper
W przypadku systemu Windows ... aby umożliwić stopniowe pobieranie określonych zależności:
usuń zależności, które chcesz ponownie pobrać z katalogu poniżej:
usuń wszystkie katalogi metadanych ze ścieżki:
uruchom
gradle build
(lubgradlew build
jeśli używasz otoki stopni) w katalogu głównym projektu.Uwaga: liczby w powyższych ścieżkach plików mogą być różne dla Ciebie.
źródło
Można usunąć folder z buforowanymi słoikami.
W moim przypadku na Macu biblioteka była buforowana na ścieżce:
/Users/MY_NAME/.gradle/caches/modules-2/files-2.1/cached-library-to-remove
Usunąłem buforowany folder biblioteki (w powyższym przykładzie „cached-library-to-remove”), usunąłem folder kompilacji mojego projektu i ponownie skompilowałem. Pobrano wtedy świeżą bibliotekę.
źródło
Zamiast usuwać całą pamięć podręczną stopni, jak sugerują niektóre odpowiedzi tutaj, możesz usunąć pamięć podręczną dla określonej grupy lub identyfikatora artefaktu. Dodałem następującą funkcję do mojego
.bash_profile
:Stosowanie:
Następnie przy następnej kompilacji lub po ponownej synchronizacji gradle ponownie pobierze zależności.
źródło
Można to zrobić na 2 sposoby:
Korzystanie z opcji --refresh-dependencies :
Krótkie wyjaśnienie - opcja odświeżania-zależności informuje Gradle o ignorowaniu wszystkich zapisanych w pamięci podręcznej pozycji dla rozwiązanych modułów i artefaktów.
Długie wyjaśnienie
Korzystanie z funkcji usuwania: po usunięciu pamięci podręcznej
Po prostu czyścisz wszystkie zbuforowane słoiki i sumy sha1, a Gradle znajduje się w sytuacji, gdy nie ma żadnych artefaktów na twoim komputerze i musi pobrać wszystko. Tak, po raz pierwszy będzie działał w 100%, ale kiedy zostanie wydany kolejny SNAPSHOT i będzie on częścią twojego drzewa zależności, znów staniesz przed wyborem odświeżenia lub wyczyszczenia pamięci podręcznej.
źródło
To zadziałało dla mnie. Upewnij się, że Gradle nie jest ustawiony na offline, usuwając zaznaczenie przycisku w Plik> Ustawienia> Gradle> Praca offline.
Dodaj to do najwyższego poziomu swojego build.gradle, miło mieć powyższe zależności
Upewniłem się, że moje zależności są zapisane w następujący sposób:
Następnie otwieram panel Gradle w Android Studio i klikam przycisk ze strzałkami w niebieskim kółku. Zawsze widzę, że moje aktualizacje otrzymują nową świeżą kopię.
źródło
Żadne z powyższych rozwiązań nie działało dla mnie.
Jeśli używasz IntelliJ, dla mnie to rozwiązało po prostu odświeżenie wszystkich projektów Gradle:
źródło
Dla tych, którzy zastanawiają się, gdzie uruchamiać polecenia gradle:
gradlew build --refresh-dependencies
źródło
Dla Androida Studio 3.4.1
Wystarczy otworzyć kartę oceny (może znajdować się po prawej stronie) i kliknąć prawym przyciskiem myszy element nadrzędny na liście (powinien mieć nazwę „Android”), a następnie wybrać opcję „Odśwież zależności”.
To powinno rozwiązać problem.
źródło
Mb Spóźniłem się, ale moje rozwiązanie dotyczy pojedynczego repozytorium. Myślę, że usunięcie ~ / .gradle / * to przesada. Problem, na który wpadłem, polegał na tym, że usuwałem katalog, w którym znajdowały się źródła, a gradle uzyskiwał inną wersję nie od nexusa. Aby tego uniknąć, uruchamiam następną:
Po tym gradie przeciąganie plików z Nexusa.
źródło
Aby odświeżyć wersję „wydania” z pamięci podręcznej, jedyną opcją jest wyczyszczenie lokalnej pamięci podręcznej.
Aby odświeżyć buforowaną wersję „migawki” możesz:
źródło
Usunięcie wszystkich pamięci podręcznych powoduje ponowne pobranie wszystkich zależności. więc zajmuje to dużo czasu i jest to nudne, poczekaj jeszcze raz, aby ponownie pobrać wszystkie zależności.
Jak jednak mogłem rozwiązać ten problem poniżej.
Po prostu usuń grupy, które wymagają odświeżenia.
Np .: jeśli chcemy odświeżyć grupę com.user.test
następnie usuń zależność z build.gradle i dodaj ją ponownie. wtedy odświeży zależności, czego chcemy.
źródło
Myślę, że problem z wersją 2.14.1 rozwiązuje ten problem. Przyjęta odpowiedź jest poprawna, ale występuje błąd w gradiencie z zależnościami -refresh. 2.14.1 to naprawia.
Zobacz https://discuss.gradle.org/t/refresh-dependencies-should-use-cachechangingmodulesfor-0s/556
źródło
usuń ten katalog:
źródło
W większości przypadków wystarczy po prostu przebudować projekt. Czasami musisz uruchomić,
./gradlew build --refresh-dependencies
ponieważ wspomniano już kilka odpowiedzi (zajmuje to dużo czasu, w zależności od tego, ile masz zależności). Czasem jednak żadna z nich nie zadziała: zależność po prostu nie zostanie zaktualizowana. Następnie możesz to zrobić:NonExistingClass
podaniem przyczyny)Jest to śmieszne i wydaje się szaleństwem, ale faktycznie używam tej procedury codziennie, po prostu dlatego, że zależność, której potrzebuję, można aktualizować dziesiątki razy i żadne odpowiednie rozwiązanie nie przyniesie żadnego efektu.
źródło
Możesz to zrobić w ten sposób
Cytat z Wyłączanie pamięci podręcznej kompilacji Gradle
źródło
Jeśli używasz zaćmienia i jeśli chcesz wymusić zaćmienie ponownego ładowania zależności, możesz wypróbować poniższe polecenie
źródło
Działa tylko ręczne usunięcie określonej zależności w folderze pamięci podręcznej ... artefakt zbudowany przez kolegę z repozytorium korporacyjnego.
źródło
W moim przypadku żadne z powyższych nie zadziałało, a ja:
build.gradle
, komentując zależności związane z nierozstrzygniętym importem, który miałemNastępnie mój import został ponownie poprawnie rozwiązany.
źródło
Musisz go ponownie pobrać, aby można było ręcznie pobrać i wymienić uszkodzony plik oraz 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 zamień go, pobierając ponownie z tej strony https: / /services.gradle.org/distribution/ Znajdź ten sam plik, pobierz go i wklej do tej lokalizacji, a następnie zsynchronizuj swój projekt. Mam nadzieję, że to też dla ciebie działa.
źródło