sbt 1.4.0 / Zinc 1.4.0 虛擬化在增量編譯期間追蹤的檔案路徑,並使用內容雜湊進行變更偵測。透過這些組合,我們可以實現可重複的建置,也稱為函式式建置。
這啟用了實驗性遠端快取(快取編譯)功能。其概念是讓開發人員團隊和/或持續整合(CI)系統共享建置輸出。如果建置是可重複的,則一台機器產生的輸出可以被另一台機器重複使用,這可以顯著加快建置速度。
ThisBuild / pushRemoteCacheTo := Some(MavenCache("local-cache", file("/tmp/remote-cache")))
然後從機器 1,呼叫 pushRemoteCache
。這會將 *.class
和 Zinc 分析成品發佈到該位置。接下來,從機器 2,呼叫 pullRemoteCache
。
從 sbt 1.4.0 開始,我們重新使用 Maven 發佈和解析機制來交換快取的建置輸出。這很可能可以輕鬆開始使用現有的基礎架構,例如 Bintray。
未來,我們可能會考慮更簡單的快取伺服器,例如使用 PUT
和 GET
的純 HTTP 伺服器。這將需要有人在某處託管 HTTP 伺服器,但佈建它們可能會變得更簡單。
為了抽象化特定於機器的路徑,例如您的工作目錄和 Coursier 快取目錄,sbt 在 ThisBuild / rootPaths
中保留了根路徑的對應。如果您的建置為您的來源或輸出目錄新增了特殊路徑,請將它們新增至 ThisBuild / rootPaths
。
如果您需要保證 ThisBuild / rootPaths
包含所有必要的路徑,則可以將 ThisBuild / allowMachinePath
設定為 false
。
從 sbt 1.4.2 開始,remoteCacheId
使用輸入來源的內容雜湊的雜湊。