有一個關於函式庫管理的入門頁面,您可能需要先閱讀它。
此頁面說明了 compile
任務與函式庫相依性管理之間的關係。
update
會根據建置檔案中的設定(例如 libraryDependencies
和 resolvers
)解析相依性。其他任務會使用 update
的輸出(UpdateReport
)來形成各種類別路徑。反過來使用這些類別路徑的任務(例如 compile
或 run
)因此間接地依賴 update
。這表示在執行 compile
之前,需要先執行 update
任務。但是,在每次 compile
時都解析相依性會不必要地緩慢,因此 update
必須特別注意何時實際執行解析。
此外,sbt 1.x 引入了函式庫管理 API (LM API) 的概念,它抽象了函式庫管理的概念。從 sbt 1.3.0 開始,LM API 有兩種實作方式:一種基於 Coursier,另一種基於 Apache Ivy。
update
任務(而不是依賴它的任務)將強制執行解析,無論設定是否變更。clean
清除任務快取也會導致執行解析。update / skip := true
會告訴 sbt 永遠不要執行解析。請注意,這可能會導致依賴任務失敗。建置的可重複性至關重要,尤其是在您與其他人共用建置時。SNAPSHOT
版本是一種方便在本機測試某些東西的方式,但其使用應僅限於本機,因為它會將可變性引入建置,這會使其變得脆弱,並且由於必須透過網路檢查發佈日期,即使成品在本機快取中,也會使相依性解析變慢。
預設情況下,Coursier 中的 SNAPSHOT
成品會被賦予 24 小時的存活時間 (TTL),以避免網路 IO。如果您需要強制重新解析 SNAPSHOTS
,請使用設定為 0s
的 COURSIER_TTL
環境變數執行 sbt。