文件

§管理函式庫相依性

注意:本頁的某些區段從 sbt 手冊複製而來,特別是 函式庫相依性 頁面。您可以參閱該頁面,以取得此處資訊的更詳細且更新的版本。

§非管理相依性

大多數人最終會使用管理相依性,這允許進行細微的控制,但非管理相依性在開始時可能會更簡單。

非管理相依性的運作方式如下:在專案的根目錄中建立一個 lib/ 目錄,然後將 jar 檔案新增到該目錄。它們會自動新增到應用程式類別路徑。沒有太多其他事項。

不需要在 build.sbt 中新增任何內容來使用非管理相依性,雖然您可以變更組態金鑰,以使用與 lib 不同的目錄。

§管理相依性

Play 使用 Apache Ivy(透過 sbt)來實作管理相依性,因此如果您熟悉 Maven 或 Ivy,您已經習慣管理相依性了。

大多時候,您只要在 build.sbt 檔案中列出您的相依性即可。

宣告相依性如下(定義 groupartifactrevision

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"

假設建置的 scalaVersion2.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:相依性衝突管理

你也可以使用 sbt-dependency-graph 來更清楚地視覺化你的相依性樹狀結構。另請參閱我們的頁面,了解 偵錯 sbt 常見問題。

下一頁:使用子專案


在本文檔中發現錯誤?此頁面的原始碼可以在 這裡 找到。在閱讀 文件指南 後,請隨時提交拉取請求。有問題或建議要分享?前往 我們的社群論壇 與社群展開對話。