![](/img/trans.png)
[英]Why gradle/ivy doesn't download dependencies if they already presented in my maven local repo?
[英]Gradle still downloads dependencies already available in local repo
我已使用“.gradle\init.d”目錄中的“offline.gradle”文件方法將 gradle 設置為使用本地 maven 存儲庫(gmaven_stable 文件)。
我不斷用 gradle 依賴項緩存 (.gradle\caches\modules-2\files-2.1) 中已下載的文件更新本地 maven 存儲庫。
但是,我已經意識到 gradle 在“gradle sync”和“compile time”期間仍然會下載一些依賴項,其中大部分我已經在我的本地 maven 存儲庫中擁有。 每當我在 Android Studio 中點擊“構建”或“運行”按鈕時,總是會下載諸如“junit”、“google play services”和許多其他依賴項。
如果有人指導我在 gradle 中停止這種行為,我將不勝感激。 我花費大量時間收集依賴項來構建我的本地 maven 存儲庫,因為我所在地區的互聯網訪問成本低且成本高。 每當“Gradle”使用我可以訪問的稀缺互聯網來重新下載我已經緩存在本地 maven 存儲庫中的那些依賴項時,這非常煩人。
Gradle 有一個內置選項可以避免網絡訪問:
--offline
命令行開關告訴 Gradle 始終使用緩存中的依賴模塊,無論是否要再次檢查它們。 離線運行時,Gradle 永遠不會嘗試訪問網絡來執行依賴解析。 如果依賴緩存中不存在所需的模塊,則構建執行將失敗。
https://docs.gradle.org/current/userguide/dynamic_versions.html#sec:offline-mode
我不斷用 gradle 依賴項緩存 (.gradle\caches\modules-2\files-2.1) 中已下載的文件更新本地 maven 存儲庫。
您不應該手動弄亂 Gradle 的內部緩存文件夾。 相反,您將 JARs 放在您可以訪問它們的其他文件夾中,例如您的主目錄。 然后,您可以配置一個平面目錄存儲庫:
repositories {
flatDir {
dirs("mylibs")
}
}
https://docs.gradle.org/current/userguide/declaring_repositories.html#sub:flat_dir_resolver
您還需要下載並定義項目中使用的各種 Gradle 插件,並以與應用程序存儲庫相同的方式配置它們:
// settings.gradle.kts
pluginManagement {
repositories {
flatDir {
dirs("mylibs")
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.