加速 SBT 下載依賴庫的速度

根據 SBT 的官網文檔中 Proxy Repositories 部分的描述, 能夠經過改變 repositoriesurl 列表來優化.html

配置國內代理庫

感謝 OSChina 提供了 Maven Center 的鏡像, 配置添加它有助於提高下載速度.git

[repositories]
  local
  oschina:http://maven.oschina.net/content/groups/public/

若你知道其餘更快的鏡像庫, 同上配置.
通常互聯網企業部署了供內部使用的鏡像庫(如 nexus ), 也能夠配置於此.github

兼容 Ivy 路徑佈局

大多數中心倉庫(repository)是 Maven 的路徑佈局, 這就致使 SBT 的插件和部分 Ivy 依賴沒法從其下載.apache

[repositories]
  local
  oschina:http://maven.oschina.net/content/groups/public/ 
  oschina-ivy:http://maven.oschina.net/content/groups/public/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]

精簡 url 列表

遠程倉庫越多越全, 能夠基本避免下載不到的問題. 可是, 也可能讓下載的時間更長, 讓你不肯在等待而放棄下載.網絡

由於, 下載過程當中 SBT 會串行的 "詢問" 列表中全部的遠程倉庫, 不管是否找獲得. maven

當依賴樹越大, 整個下載的過程就更漫長. 若再遇到響應慢的倉庫, 狀況惡化的使人髮指.工具

推薦列表策略是:佈局

  • 本地倉庫post

  • 國內(或內網)鏡像倉庫優化

  • 國外官方倉庫, 一般 # 註釋掉, 待上面無論用時, 去掉 # 再作嘗試

上面辦法無論用

建議使用你熟悉的網絡嗅探手段查清具體緣由, 對症下藥了.

一個可行的方案

  1. 下載 HTTP 代理工具 mitmproxy, 並運行它

  2. 啓動 SBT時, 附加參數 -Dhttp.proxyHost=loalhost -Dhttp.proxyPort=8080, 這會將 SBT 全部的 HTTP 請求經由 mitmproxy轉發

  3. 經過 mitmproxy 來分析 HTTP 請求失敗的具體緣由

此外你還能夠參考

相關文章
相關標籤/搜索