到目前为止,我们主要关注的是任务。还有一种称为输入任务的任务,它接受来自 shell 的用户输入。一个典型的例子是 Compile / run
任务。scalastyle
任务实际上也是一个输入任务。有关输入任务的详细信息,请参见 输入任务。
现在假设我们要调用 Compile / run
任务,然后打开浏览器以进行测试。
object Greeting {
def main(args: Array[String]): Unit = {
println("hello " + args.toList)
}
}
lazy val runopen = inputKey[Unit]("run and then open the browser")
lazy val root = (project in file("."))
.settings(
runopen := {
(Compile / run).evaluated
println("open browser!")
}
)
在这里,我使用 println
作为副作用来模拟浏览器打开。现在我们可以从 shell 调用此任务
> runopen foo
[info] Compiling 1 Scala source to /x/proj/...
[info] Running Greeting foo
hello List(foo)
open browser!
我们可以通过将新的输入任务重写为 Compile / run
来实际删除 runopen
键
lazy val root = (project in file("."))
.settings(
Compile / run := {
(Compile / run).evaluated
println("open browser!")
}
)