§管理函式庫相依性
注意:本頁的某些區段從 sbt 手冊複製而來,特別是 函式庫相依性 頁面。您可以參閱該頁面,以取得此處資訊的更詳細且更新的版本。
§非管理相依性
大多數人最終會使用管理相依性,這允許進行細微的控制,但非管理相依性在開始時可能會更簡單。
非管理相依性的運作方式如下:在專案的根目錄中建立一個 lib/
目錄,然後將 jar 檔案新增到該目錄。它們會自動新增到應用程式類別路徑。沒有太多其他事項。
不需要在 build.sbt
中新增任何內容來使用非管理相依性,雖然您可以變更組態金鑰,以使用與 lib
不同的目錄。
§管理相依性
Play 使用 Apache Ivy(透過 sbt)來實作管理相依性,因此如果您熟悉 Maven 或 Ivy,您已經習慣管理相依性了。
大多時候,您只要在 build.sbt
檔案中列出您的相依性即可。
宣告相依性如下(定義 group
、artifact
和 revision
)
libraryDependencies += "org.apache.derby" % "derby" % "10.16.1.1"
或者像這樣,加上一個選用的 configuration
libraryDependencies += "org.apache.derby" % "derby" % "10.16.1.1" % "test"
可以透過多個宣告來新增多個相依性,或提供 Scala 序列
libraryDependencies ++= Seq(
"org.apache.derby" % "derby" % "10.16.1.1",
"org.hibernate" % "hibernate-core" % "6.4.4.Final"
)
當然,sbt(透過 Ivy)必須知道從何處下載模組。如果你的模組在 sbt 附帶的其中一個預設儲存庫中,這就會運作。
§使用 %%
取得正確的 Scala 版本
如果你使用 groupID %% artifactID % revision
而不是 groupID % artifactID % revision
(差異在於 groupID
之後的雙重 %%
),sbt 會將專案的 Scala 版本新增到成品名稱。這只是一個捷徑。你可以不用 %%
來撰寫
libraryDependencies += "org.scala-stm" % "scala-stm_2.13" % "0.9.1"
假設建置的 scalaVersion
為 2.13.13
,下列是相同的(注意 "org.scala-tools"
之後的雙重 %%
)
libraryDependencies += "org.scala-stm" %% "scala-stm" % "0.9.1"
概念是許多相依性都是針對多個 Scala 版本編譯,而你會想要取得與專案相符的版本以確保二進位相容性。
§解析器
預設情況下,sbt 使用 Maven Central,且根據你使用的 sbt 版本,可能會使用其他儲存庫。你可以在 sbt 這裡 找到這些儲存庫(選擇與你的 sbt 版本對應的標籤)。
使用 resolvers
設定金鑰來新增你自己的解析器。例如
resolvers ++= Resolver.sonatypeOssRepos("snapshots")
如果你將 sbt 新增為儲存庫,sbt 可以搜尋你的本機 Maven 儲存庫
resolvers += (
"Local Maven Repository".at(s"file:///${Path.userHome.absolutePath}/.m2/repository")
)
§處理相依性之間的衝突
sbt 有關於如何管理相依性之間衝突的詳細文件
你也可以使用 sbt-dependency-graph 來更清楚地視覺化你的相依性樹狀結構。另請參閱我們的頁面,了解 偵錯 sbt 常見問題。
下一頁:使用子專案
在本文檔中發現錯誤?此頁面的原始碼可以在 這裡 找到。在閱讀 文件指南 後,請隨時提交拉取請求。有問題或建議要分享?前往 我們的社群論壇 與社群展開對話。