Scala 从sbt任务中的标准输入读取

Scala 从sbt任务中的标准输入读取,scala,sbt,Scala,Sbt,假设我有以下代码 object Cli extends App { Iterator.continually(StdIn.readLine()).takeWhile(!_.equals("quit")).foreach { command => println(s"[$command RESULT] " + ApiClient.executeCommand(command)) } } 和自定义sbt命令 val cli = inputKey[Unit]("Run clie

假设我有以下代码

object Cli extends App {
  Iterator.continually(StdIn.readLine()).takeWhile(!_.equals("quit")).foreach { command =>
    println(s"[$command RESULT] " + ApiClient.executeCommand(command))
  }
}
和自定义sbt命令

val cli = inputKey[Unit]("Run client")
cli := {
  "java -cp my.jar Cli".!
}
如果我从控制台运行“java-cpmy.jarcli”,它就可以正常工作。但当我调用“sbt cli”时,它会失败,并出现NullPointerException

Exception in thread "main" java.lang.NullPointerException
        at Cli$$anonfun$2.apply(Cli.scala:14)

如何定义sbt任务以从stdin读取命令?

将其添加到
build.sbt

fork := true