ここまでタスクに焦点を当ててみてきた。タスクには他にインプットタスクというものがあって、これはユーザからの入力をシェル上で受け取る。
典型的な例としては run in Compile
タスクがある。scalastyle
タスクも実はインプットタスクだ。インプットタスクの詳細は Input Task 参照。
ここで、run in Compile
タスクの実行後にテスト用にブラウザを開く方法を考えてみる。
object Greeting extends App {
println("hello " + args.toList)
}
lazy val runopen = inputKey[Unit]("run and then open the browser")
lazy val root = (project in file(".")).
settings(
runopen := {
(run in Compile).evaluated
println("open browser!")
}
)
ここでは、ブラウザを本当に開く代わりに副作用のある println
で例示した。シェルからこのタスクを呼び出してみよう:
> runopen foo
[info] Compiling 1 Scala source to /x/proj/...
[info] Running Greeting foo
hello List(foo)
open browser!
この新しいインプットタスクを run in Compile
に再配線することで、実は runopen
キーを外すことができる:
lazy val root = (project in file(".")).
settings(
run in Compile := {
(run in Compile).evaluated
println("open browser!")
}
)