すべてのプロジェクトに適用される設定は、$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
の例に示すように、プラグインのアイデアを試すことができることを意味します。