請先閱讀入門指南中的先前頁面,特別是您需要了解 build.sbt、任務圖、函式庫依賴,才能閱讀此頁面。
外掛程式會擴充建置定義,最常見的方式是新增設定。新設定可以是新任務。例如,外掛程式可以新增 codeCoverage
任務,該任務會產生測試覆蓋率報告。
如果您的專案位於 hello
目錄中,並且您要將 sbt-site 外掛程式新增至建置定義,請建立 hello/project/site.sbt
,並將外掛程式的 Ivy 模組 ID 傳遞給 addSbtPlugin
,以宣告外掛程式依賴。
addSbtPlugin("com.typesafe.sbt" % "sbt-site" % "0.7.0")
如果您要新增 sbt-assembly,請建立包含以下內容的 hello/project/assembly.sbt
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")
並非每個外掛程式都位於預設儲存庫之一,外掛程式的文件可能會指示您也新增可以找到它的儲存庫
resolvers ++= Resolver.sonatypeOssRepos("public")
外掛程式通常會提供新增至專案以啟用外掛程式功能設定。這會在下一節中說明。
外掛程式可以宣告其設定自動新增至建置定義,在這種情況下,您不需要執行任何動作即可新增它們。
從 sbt 0.13.5 開始,有一個新的 自動外掛程式功能,可讓外掛程式自動且安全地確保其設定和依賴關係位於專案上。許多自動外掛程式應自動具有其預設設定,但有些可能需要明確啟用。
如果您使用需要明確啟用的自動外掛程式,則必須將以下內容新增至您的 build.sbt
lazy val util = (project in file("util"))
.enablePlugins(FooPlugin, BarPlugin)
.settings(
name := "hello-util"
)
enablePlugins
方法可讓專案明確定義它們想要使用的自動外掛程式。
專案也可以使用 disablePlugins
方法排除外掛程式。例如,如果我們想要從 util
中移除 IvyPlugin
設定,我們會如下修改我們的 build.sbt
lazy val util = (project in file("util"))
.enablePlugins(FooPlugin, BarPlugin)
.disablePlugins(plugins.IvyPlugin)
.settings(
name := "hello-util"
)
自動外掛程式應記錄它們是否需要明確啟用。如果您好奇特定專案啟用了哪些自動外掛程式,只需在 sbt 主控台上執行 plugins
命令即可。
例如
> plugins
In file:/home/jsuereth/projects/sbt/test-ivy-issues/
sbt.plugins.IvyPlugin: enabled in scala-sbt-org
sbt.plugins.JvmPlugin: enabled in scala-sbt-org
sbt.plugins.CorePlugin: enabled in scala-sbt-org
sbt.plugins.JUnitXmlReportPlugin: enabled in scala-sbt-org
在這裡,plugins
輸出顯示 sbt 預設外掛程式都已啟用。sbt 的預設設定是透過三個外掛程式提供的
CorePlugin
:提供任務的核心平行處理控制。IvyPlugin
:提供發布/解析模組的機制。JvmPlugin
:提供編譯/測試/執行/封裝 Java/Scala 專案的機制。此外,JUnitXmlReportPlugin
提供產生 junit-xml 的實驗性支援。
較舊的非自動外掛程式通常需要明確新增設定,以便 多專案建置 可以有不同類型的專案。外掛程式文件會指出如何配置它,但通常對於較舊的外掛程式,這涉及新增外掛程式的基本設定並視需要進行自訂。
例如,對於 sbt-site 外掛程式,請使用以下內容建立 site.sbt
site.settings
為該專案啟用它。
如果建置定義多個專案,請改為將其直接新增至專案
// don't use the site plugin for the `util` project
lazy val util = (project in file("util"))
// enable the site plugin for the `core` project
lazy val core = (project in file("core"))
.settings(site.settings)
您可以透過在 $HOME/.sbt/1.0/plugins/
中宣告外掛程式來一次安裝所有專案的外掛程式。$HOME/.sbt/1.0/plugins/
是一個 sbt 專案,其類別路徑會匯出至所有 sbt 建置定義專案。大致上來說,$HOME/.sbt/1.0/plugins/
中的任何 .sbt
或 .scala
檔案的行為都如同它們位於所有專案的 project/
目錄中一樣。
您可以建立 $HOME/.sbt/1.0/plugins/build.sbt
並在其中放入 addSbtPlugin()
表達式,以一次將外掛程式新增至您的所有專案。由於這樣做會增加對機器環境的依賴,因此應謹慎使用此功能。請參閱 最佳實務。
這裡有一個可用的外掛程式清單。
一些特別受歡迎的外掛程式包括