Wie kann ich gradle anweisen, Abhängigkeiten aus Repositorys erneut herunterzuladen?
741
Im Allgemeinen können Sie Abhängigkeiten in Ihrem Cache mit der Befehlszeilenoption --refresh-dependencies aktualisieren . Sie können die zwischengespeicherten Dateien auch unter löschen ~/.gradle/caches
. Mit dem nächsten Build würde Gradle versuchen, sie erneut herunterzuladen.
Was ist Ihr spezifischer Anwendungsfall? Verwenden Sie dynamische Abhängigkeitsversionen oder SNAPSHOT-Versionen?
Auf Unix-Systemen können Sie alle vorhandenen Artefakte (Artefakte und Metadaten) löschen, die Gradle heruntergeladen hat, indem Sie:
rm -rf $HOME/.gradle/caches/
find $HOME/.gradle/caches/ -name "*LIBRARY_NAME*" -exec rm -r {} \;
Wenn Sie eine aktuelle Version von Gradle verwenden, können Sie die Option --refresh-dependencies verwenden.
Sie können sich auf das Gradle-Handbuch beziehen .
quelle
Sie können Gradle anweisen, einige Abhängigkeiten im Build-Skript erneut herunterzuladen, indem Sie die Abhängigkeit als "Ändern" kennzeichnen. Gradle sucht dann alle 24 Stunden nach Updates. Dies kann jedoch mit der AuflösungStrategy DSL konfiguriert werden. Ich finde es nützlich, dies für SNAPSHOT- oder NIGHTLY-Builds zu verwenden.
Erweitert:
Kondensiert:
Ich habe diese Lösung in diesem Forenthread gefunden .
quelle
cacheChangingModulesFor
ist der Schlüssel,changing: true
ist optional, weil es impliziert ist-SNAPSHOT
, es ist möglich, die Kurzschrift hier zu verwenden:compile 'group:projectA:1.1-SNAPSHOT'
wegen der obigen Implikation. Man kann die Auflösungsstrategie auch auf eine Konfiguration beschränken :configurations.compile.resolutionS...
.compile 'com.burrowsapps:ads:1.0:true'
?Für MAC
./gradlew build --refresh-dependencies
Für Windows
gradlew build --refresh-dependencies
Kann es auch versuchen
gradlew assembleDevelopmentDebug --refresh-dependencies
quelle
gradle wrapper
Aufgabe erstellen. Sie können sogar einen Wrapper mit einem anderen Gradle-Wrapper generieren:gradlew wrapper
Für Windows ... um Gradle dazu zu bringen, bestimmte Abhängigkeiten erneut herunterzuladen :
Löschen Sie die Abhängigkeiten, die Sie erneut herunterladen möchten, aus dem folgenden Verzeichnis:
Löschen Sie alle Metadatenverzeichnisse im Pfad:
Führen Sie
gradle build
(odergradlew build
wenn Sie einen Gradle-Wrapper verwenden) das Stammverzeichnis des Projekts aus.Hinweis: Die Nummern in den obigen Dateipfaden können für Sie unterschiedlich sein.
quelle
Man kann Ordner mit zwischengespeicherten Gläsern entfernen.
In meinem Fall wurde die Bibliothek auf einem Mac im Pfad zwischengespeichert:
/Users/MY_NAME/.gradle/caches/modules-2/files-2.1/cached-library-to-remove
Ich habe den zwischengespeicherten Bibliotheksordner entfernt (im obigen Beispiel "zu entfernende zwischengespeicherte Bibliothek"), den Build-Ordner meines Projekts gelöscht und erneut kompiliert. Dann wurde eine neue Bibliothek heruntergeladen.
quelle
Anstatt Ihren gesamten Gradle-Cache zu entfernen, wie einige Antworten hier vorschlagen, können Sie den Cache für eine bestimmte Gruppen- oder Artefakt-ID löschen. Ich habe die folgende Funktion zu meiner hinzugefügt
.bash_profile
:Verwendungszweck:
Beim nächsten Build oder beim erneuten Synchronisieren lädt gradle die Abhängigkeiten erneut herunter.
quelle
Dafür gibt es zwei Möglichkeiten:
Verwenden der Option --refresh-dependencies :
Kurze Erklärung - Die Option --refresh-dependencies weist Gradle an, alle zwischengespeicherten Einträge für aufgelöste Module und Artefakte zu ignorieren.
Lange Erklärung
Löschen verwenden: Wenn Sie Caches löschen
Sie reinigen einfach alle zwischengespeicherten Gläser und sha1-Summen, und Gradle befindet sich in einer Situation, in der sich keine Artefakte auf Ihrem Computer befinden und alles heruntergeladen werden muss. Ja, es funktioniert zum ersten Mal zu 100%, aber wenn ein anderer SNAPSHOT veröffentlicht wird und er Teil Ihres Abhängigkeitsbaums ist, stehen Sie erneut vor der Wahl, die Caches zu aktualisieren oder zu löschen.
quelle
Das hat bei mir funktioniert. Stellen Sie sicher, dass Gradle nicht offline ist, indem Sie die Schaltfläche unter Datei> Einstellungen> Gradle> Offline-Arbeit deaktivieren.
Fügen Sie dies zur obersten Ebene Ihres build.gradle hinzu, schön, dass Sie die oben genannten Abhängigkeiten haben
Ich habe sichergestellt, dass meine Abhängigkeiten folgendermaßen geschrieben sind:
Danach öffne ich das Gradle-Bedienfeld in Android Studio und klicke auf die Schaltfläche mit den blauen Kreispfeilen. Ich kann immer sehen, dass meine Updates eine neue Kopie erhalten.
quelle
Keine der oben genannten Lösungen hat bei mir funktioniert.
Wenn Sie IntelliJ verwenden, hat es für mich einfach alle Gradle-Projekte aktualisiert:
quelle
Für diejenigen, die sich fragen, wo Gradle-Befehle ausgeführt werden sollen:
gradlew build --refresh-dependencies
quelle
Für Android Studio 3.4.1
Öffnen Sie einfach die Registerkarte "Gradle" (befindet sich rechts) und klicken Sie mit der rechten Maustaste auf das übergeordnete Element in der Liste (sollte "Android" heißen). Wählen Sie dann "Abhängigkeiten aktualisieren".
Dies sollte Ihr Problem beheben.
quelle
Mb Ich bin zu spät, aber meine Lösung ist für ein einzelnes Repository. Ich denke, das Löschen von ~ / .gradle / * ist übertrieben. Das Problem, auf das ich gestoßen bin, war, dass ich ein Verzeichnis löschte, in dem sich Quellen befanden, und gradle eine andere Version erhielt, die nicht von nexus stammt. Um dies zu vermeiden, führe ich das nächste aus:
Danach zieht gradle Dateien aus dem Nexus.
quelle
Um die zwischengespeicherte Release-Version zu aktualisieren, besteht die einzige Option darin, den lokalen Cache zu löschen.
So aktualisieren Sie die zwischengespeicherte Snapshot-Version:
quelle
Wenn Sie alle Caches löschen, werden alle Abhängigkeiten erneut heruntergeladen. Es dauert also so lange und es ist langweilig, noch einmal zu warten, um alle Abhängigkeiten erneut herunterzuladen.
Wie auch immer, ich könnte dies unten lösen.
Löschen Sie einfach Gruppen, die aktualisiert werden müssen.
Beispiel: Wenn wir die Gruppe com.user.test aktualisieren möchten
Entfernen Sie dann die Abhängigkeit von build.gradle und fügen Sie sie erneut hinzu. dann werden die Abhängigkeiten aktualisiert, was wir wollen.
quelle
Ich denke, Gradle 2.14.1 behebt das Problem. Die akzeptierte Antwort ist korrekt, aber es gibt einen Fehler in Gradle mit –refresh-Abhängigkeiten. 2.14.1 behebt das.
Siehe https://discuss.gradle.org/t/refresh-dependencies-should-use-cachechangingmodulesfor-0s/556
quelle
Löschen Sie dieses Verzeichnis:
quelle
In den meisten Fällen reicht es aus, das Projekt einfach neu aufzubauen. Manchmal müssen Sie ausführen,
./gradlew build --refresh-dependencies
wie bereits mehrere Antworten erwähnt haben (dies dauert lange, je nachdem, wie viele Abhängigkeiten Sie haben). Manchmal funktioniert jedoch keines davon: Die Abhängigkeit wird einfach nicht aktualisiert. Dann können Sie dies tun:NonExistingClass
Grund).Das ist lächerlich und scheint Wahnsinn zu sein, aber ich verwende dieses Verfahren tatsächlich täglich, einfach weil die Abhängigkeit, die ich brauche, Dutzende Male aktualisiert werden kann und keine der angemessenen Lösungen Auswirkungen haben würde.
quelle
Sie können es so machen
Zitat aus Deaktivieren des Gradle-Build-Cache
quelle
Wenn Sie Eclipse verwenden und Eclipse zum erneuten Laden von Abhängigkeiten erzwingen möchten, können Sie den folgenden Befehl verwenden
quelle
Nur ein manuelles Löschen der spezifischen Abhängigkeit im Cache-Ordner funktioniert ... ein Artefakt, das von einem Kollegen in Enterprise Repo erstellt wurde.
quelle
In meinem Fall hat keines der oben genannten Verfahren funktioniert. Ich habe Folgendes getan:
build.gradle
, kommentieren die zu den ungelösten Einfuhren Abhängigkeiten Ich hatteDann wurden meine Importe wieder richtig aufgelöst.
quelle
Sie müssen es erneut herunterladen, damit Sie die beschädigte Datei entweder manuell herunterladen und ersetzen und Ihr Projekt erneut synchronisieren können. Gehen Sie zu diesem Speicherort C: \ users [Benutzername] .gradle \ wrapper \ dist \ gradle3.3-all \ 55gk2rcmfc6p2dg9u9ohc3hw9 \ gradle-3.3-all.zip. Löschen Sie hier gradle3.3allzip und ersetzen Sie es, indem Sie es erneut von dieser Site herunterladen. Https : / /services.gradle.org/distributions/ Suchen Sie dieselbe Datei und laden Sie sie herunter und fügen Sie sie an diesem Speicherort ein. Synchronisieren Sie dann Ihr Projekt. Hoffe es funktioniert auch bei dir.
quelle