Bagaimana saya dapat memberitahu gradle untuk mengunduh kembali dependensi dari repositori?
742
Secara umum, Anda dapat menyegarkan dependensi di cache dengan opsi baris perintah --reesh-dependensi . Anda juga dapat menghapus file yang di-cache di bawah ~/.gradle/caches
. Dengan build selanjutnya, Gradle akan mencoba mengunduhnya lagi.
Apa kasus penggunaan khusus Anda? Apakah Anda menggunakan versi ketergantungan dinamis atau versi SNAPSHOT?
Pada sistem Unix, Anda dapat menghapus semua artefak (artefak dan metadata) yang ada yang diunduh Gradle menggunakan:
rm -rf $HOME/.gradle/caches/
find $HOME/.gradle/caches/ -name "*LIBRARY_NAME*" -exec rm -r {} \;
Jika Anda menggunakan versi terbaru Gradle, Anda dapat menggunakan opsi --refresh-dependencies.
Anda dapat merujuk ke manual Gradle .
sumber
Anda dapat memberi tahu Gradle untuk mengunduh kembali beberapa dependensi dalam skrip build dengan menandai dependensi sebagai 'berubah'. Gradle kemudian akan memeriksa pembaruan setiap 24 jam, tetapi ini dapat dikonfigurasikan menggunakan resolusinya. Saya merasa berguna untuk menggunakan ini untuk SNAPSHOT atau membangun MALAM.
Diperluas:
Kental:
Saya menemukan solusi ini di utas forum ini .
sumber
cacheChangingModulesFor
adalah kuncinya,changing: true
bersifat opsional karena tersirat oleh-SNAPSHOT
, mungkin untuk menggunakan singkatan di sini:compile 'group:projectA:1.1-SNAPSHOT'
karena implikasi di atas. Satu juga dapat membatasi resolutionStrategy satu config:configurations.compile.resolutionS...
.compile 'com.burrowsapps:ads:1.0:true'
?Untuk Mac
./gradlew build --refresh-dependencies
Untuk Windows
gradlew build --refresh-dependencies
Bisa juga mencoba
gradlew assembleDevelopmentDebug --refresh-dependencies
sumber
gradle wrapper
tugas; Anda bahkan dapat membuat pembungkus menggunakan pembungkus Gradle lain:gradlew wrapper
Untuk Windows ... untuk membuat unduhan dependensi khusus gradle :
hapus dependensi yang ingin Anda unduh kembali dari direktori di bawah ini:
hapus semua direktori metadata di jalur:
jalankan
gradle build
(ataugradlew build
jika menggunakan gradle wrapper) di direktori root proyek.Catatan: angka-angka di jalur file di atas mungkin berbeda untuk Anda.
sumber
Satu dapat menghapus folder dengan stoples cache.
Dalam kasus saya, pada Mac perpustakaan di-cache di path:
/Users/MY_NAME/.gradle/caches/modules-2/files-2.1/cached-library-to-remove
Saya menghapus folder cached library ("cached-library-to-remove" pada contoh di atas), menghapus folder build dari proyek saya dan mengkompilasi lagi. Perpustakaan baru telah diunduh.
sumber
Alih-alih menghapus seluruh cache gradle, seperti disarankan beberapa jawaban di sini, Anda dapat menghapus cache untuk grup atau id artefak tertentu. Saya menambahkan fungsi berikut ke
.bash_profile
:Pemakaian:
Kemudian, pada build berikutnya atau jika Anda melakukan sinkronisasi ulang, gradle akan mengunduh ulang dependensi.
sumber
Ada 2 cara untuk melakukan itu:
Menggunakan opsi --refresh-dependencies :
Penjelasan singkat --refresh-dependensi memberi tahu Gradle untuk mengabaikan semua entri yang di-cache untuk modul dan artefak yang diselesaikan.
Penjelasan panjang
Menggunakan delete: Saat Anda menghapus cache
Anda cukup membersihkan semua stoples dan jumlah cache yang di-cache dan Gradle berada dalam situasi di mana tidak ada artefak pada mesin Anda dan harus mengunduh semuanya. Ya itu akan bekerja 100% untuk pertama kalinya, tetapi ketika SNAPSHOT lain dilepaskan dan itu adalah bagian dari pohon dependensi Anda, Anda akan dihadapkan lagi di depan pilihan untuk menyegarkan atau membersihkan cache.
sumber
Ini berhasil untuk saya. Pastikan Gradle tidak diatur ke offline dengan menghapus centang pada File> Pengaturan> Gradle> Offline Work.
Tambahkan ini ke tingkat atas build.gradle Anda, senang memiliki dependensi di atas
Saya memastikan dependensi saya ditulis seperti ini:
Setelah itu, saya membuka panel Gradle di Android Studio dan klik tombol panah lingkaran biru. Saya selalu dapat melihat pembaruan saya mendapatkan salinan baru.
sumber
Tidak ada solusi di atas yang berfungsi untuk saya.
Jika Anda menggunakan IntelliJ, apa yang terselesaikan bagi saya hanyalah menyegarkan semua proyek Gradle:
sumber
Bagi mereka yang bertanya-tanya di mana harus menjalankan perintah gradle:
gradlew build --refresh-dependencies
sumber
Untuk Android Studio 3.4.1
Cukup buka tab gradle (dapat ditemukan di kanan) dan klik kanan pada induk dalam daftar (harus disebut "Android"), lalu pilih "Refresh dependencies".
Ini harus menyelesaikan masalah Anda.
sumber
Mb Saya terlambat tetapi solusi saya adalah untuk repositori tunggal. Saya pikir menghapus ~ / .gradle / * berlebihan. Masalah yang saya temui adalah saya menghapus direktori tempat source dan gradle mendapatkan versi lain bukan dari nexus. Untuk menghindari itu saya menjalankan yang berikutnya:
Setelah itu gradle menyeret file dari nexus.
sumber
Untuk menyegarkan versi 'rilis' yang di-cache, satu-satunya pilihan adalah menghapus cache lokal.
Untuk menyegarkan versi 'snapshot' dalam cache Anda dapat:
sumber
Menghapus semua cache membuat unduhan semua ketergantungan lagi. jadi butuh waktu sangat lama dan itu hal yang membosankan tunggu lagi untuk mengunduh ulang semua ketergantungan.
Bagaimana saya bisa menyelesaikan ini di bawah ini.
Hapus saja grup yang perlu di-refresh.
Mis: jika kita ingin me-refresh grup com.user.test
kemudian hapus dependensi dari build.gradle dan tambahkan kembali. maka itu akan menyegarkan dependensi apa yang kita inginkan.
sumber
Saya pikir gradle 2.14.1 memperbaiki masalah. Jawaban yang diterima benar, tetapi ada bug dalam gradle dengan –refresh-dependencies. 2.14.1 memperbaikinya.
Lihat https://discuss.gradle.org/t/refresh-dependencies-should-use-cachechangingmodulesfor-0s/556
sumber
hapus direktori ini:
sumber
Untuk sebagian besar kasus, hanya dengan membangun kembali proyek harus melakukan trik. Kadang-kadang Anda harus menjalankan
./gradlew build --refresh-dependencies
karena beberapa jawaban telah disebutkan (butuh waktu lama, tergantung pada seberapa banyak dependensi yang Anda miliki). Bagaimana pun, kadang-kadang tidak satupun dari mereka akan bekerja: ketergantungan tidak akan diperbarui. Kemudian, Anda dapat melakukan ini:NonExistingClass
alasan)Ini konyol dan sepertinya gila, tetapi saya benar-benar menggunakan prosedur ini setiap hari, hanya karena ketergantungan yang saya butuhkan dapat diperbarui puluhan kali dan tidak ada solusi yang memadai yang akan berpengaruh.
sumber
Anda bisa melakukannya seperti ini
Mengutip dari Menonaktifkan Cache Gradle Build
sumber
Jika Anda menggunakan eclipse dan jika Anda ingin memaksa eclipse untuk memuat kembali dependensi Anda dapat mencoba perintah di bawah ini
sumber
Hanya penghapusan manual dari ketergantungan khusus dalam folder cache yang berfungsi ... sebuah artifactory yang dibuat oleh seorang rekan dalam repo perusahaan.
sumber
Dalam kasus saya tidak ada yang berhasil, yang saya lakukan adalah:
build.gradle
, mengomentari dependensi terkait dengan impor yang belum terselesaikan yang saya milikiKemudian impor saya diselesaikan dengan benar lagi.
sumber
Anda perlu mengunduh ulang, sehingga Anda dapat mengunduh dan mengganti file yang rusak secara manual dan menyinkronkan lagi proyek Anda. Pergi ke lokasi ini C: \ users [username] .gradle \ wrapper \ dist \ gradle3.3-all \ 55gk2rcmfc6p2dg9u9ohc3hw9 \ gradle-3.3-all.zip Di sini hapus gradle3.3allzip dan ganti dengan mengunduh lagi dari situs ini https: / /services.gradle.org/distributions/ Temukan file yang sama dan unduh dan tempel ke lokasi itu Kemudian sinkronkan proyek Anda. Semoga berhasil juga untuk Anda.
sumber