グローバル設定 onLoad
は State => State
型で、すべてのプロジェクトがビルドされロードされた後に一度だけ実行されます。プロジェクトがアンロードされるときの同様のフックとして onUnload
があります。
プロジェクトのアンロードは通常、reload
コマンドまたは set
コマンドの結果として発生します。onLoad
および onUnload
フックはグローバルであるため、この設定の変更には通常、以前の値で新しい関数を構成することが含まれます。次の例は、onLoad
を定義する基本的な構造を示しています。
起動時に dependencyUpdates
という名前のタスクを実行するとします。これはあなたができることです。
lazy val dependencyUpdates = taskKey[Unit]("foo")
// This prepends the String you would type into the shell
lazy val startupTransition: State => State = { s: State =>
"dependencyUpdates" :: s
}
lazy val root = (project in file("."))
.settings(
ThisBuild / scalaVersion := "2.12.6",
ThisBuild / organization := "com.example",
name := "helloworld",
dependencyUpdates := { println("hi") },
// onLoad is scoped to Global because there's only one.
Global / onLoad := {
val old = (Global / onLoad).value
// compose the new transition on top of the existing one
// in case your plugins are using this hook.
startupTransition compose old
}
)
この手法を使用すると、起動時のサブプロジェクトも切り替えることができます。