事情是這樣的。
這周二,同事提交了一個(gè)組件的新版本0.1.0
,更新了工程里對(duì)這個(gè)組件的依賴的版本號(hào)之后,Sync Now
成功,但發(fā)現(xiàn)新版本把以前的一個(gè)接口移除了,需要重新加回來。
于是乎,同事重新提交了組件,然而版本號(hào)不變,依然保持0.1.0
。
接著悲劇就發(fā)生了。由于之前Gradle 本地已經(jīng)下載到了舊的0.1.0
版本的組件,這個(gè)組件緩存到了本機(jī)的cache中,后續(xù)Gradle發(fā)現(xiàn)本地已有0.1.0
版本,就不會(huì)重復(fù)發(fā)起網(wǎng)絡(luò)請(qǐng)求去拉取這個(gè)組件,因而本地使用的,就一直是舊的那份緩存,而非服務(wù)器上更新過的那份。
解決問題關(guān)鍵,就是讓Gradle重新去下載依賴的組件。有兩種方式:
清除Gradle 的緩存:緩存所在路徑為
~/.gradle/caches/
,簡單粗暴地使用rm -rf ~/.gradle/caches/
干掉所有緩存,自然就能讓Gradle重新下載依賴的組件。但這種方式過于粗暴,會(huì)影響全局所有的緩存,不僅僅是所有工程的依賴,還包括Gradle Wrapper依賴的Gradle 版本緩存。另一種方式,是在執(zhí)行 Gradle 腳本任務(wù)的命令后面,追加
--refresh-dependencies
參數(shù),讓Gradle在執(zhí)行過程中,刷新相關(guān)的依賴。這樣就能做到僅刷新當(dāng)前工程的依賴,而不影響其他的東西。示例:./gradlew :app:assembleDebug --refresh-dependencies
參考資料
How can I force gradle to redownload dependencies?
The Gradle build system- Tutorial