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 の例に示すように、プラグインのアイデアを試すことができることを意味します。