请先阅读入门指南中的早期页面,特别是您需要理解 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()
表达式放在其中,以将插件一次添加到所有项目中。由于这样做会增加对机器环境的依赖,因此此功能应谨慎使用。请参阅 最佳实践。
有一个 可用插件列表。
一些特别受欢迎的插件是