1. 全局设置

全局设置 

基本全局配置文件 

应应用于所有项目的设置可以放在 $HOME/.sbt/1.0/global.sbt (或 $HOME/.sbt/1.0 中任何扩展名为 .sbt 的文件)中。在 $HOME/.sbt/1.0/plugins/ 中全局定义的插件可用于这些设置。例如,要更改项目的默认 shellPrompt

$HOME/.sbt/1.0/global.sbt

shellPrompt := { state =>
  "sbt (%s)> ".format(Project.extract(state).currentProject.id)
}

您也可以在 $HOME/.sbt/1.0/plugins/build.sbt 中配置全局添加的插件(请参阅下一段),但您需要使用它们的属性的完全限定名。例如,对于在 https://github.com/sbt/sbteclipse/wiki/Using-sbteclipse 中记录的 sbt-eclipse 属性 withSource,您需要使用

com.typesafe.sbteclipse.core.EclipsePlugin.EclipseKeys.withSource := true

使用全局插件的全局设置 

$HOME/.sbt/1.0/plugins/ 目录是一个全局插件项目。这可以用来提供全局命令、插件或其他代码。

要全局添加插件,请创建 $HOME/.sbt/1.0/plugins/build.sbt,其中包含依赖项定义。例如

addSbtPlugin("org.example" % "plugin" % "1.0")

要使用这种方法更改每个项目的默认 shellPrompt,请创建一个本地插件 $HOME/.sbt/1.0/plugins/ShellPrompt.scala

import sbt._
import Keys._

object ShellPrompt extends AutoPlugin {
  override def trigger = allRequirements

  override def projectSettings = Seq(
    shellPrompt := { state =>
      "sbt (%s)> ".format(Project.extract(state).currentProject.id) }
  )
}

$HOME/.sbt/1.0/plugins/ 目录是一个完整的项目,作为每个插件项目的外部依赖项包含在内。实际上,这里定义的设置和代码有效地与在项目的 project/ 目录中定义的一样。这意味着 $HOME/.sbt/1.0/plugins/ 可以用来尝试插件的想法,如 shellPrompt 示例中所示。