我从zio.dev设置了简单的ZIO应用。
val myAppLogic =
for {
_ <- putStrLn("Hello! What is your name?")
name <- getStrLn
_ <- putStrLn(s"Hello, ${name}, welcome to ZIO!")
} yield ()
当在 Intellij 中运行时,按预期运行。
但是用 mill 运行它却没有。
nbszmbp012:zio-scala-camunda-bot mpa$ mill server.run
[27/37] server.compile
[info] Compiling 1 Scala source to /Users/mpa/dev/Github/pme123/zio-scala-camunda-bot/out/server/compile/dest/classes ...
[info] Done compiling.
[37/37] server.run
Hello! What is your name?
Peter
name <- getStrLn
未执行。
这里是build.sc
import mill._, scalalib._
object server extends ScalaModule {
def scalaVersion = "2.12.8"
def ivyDeps = Agg(
ivy"dev.zio::zio:1.0.0-RC10-1",
ivy"com.bot4s::telegram-core:4.3.0-RC1"
)
}
我错过了什么吗?
答案 0 :(得分:4)
默认情况下,Mill在客户端-服务器模式下运行。结果之一是,构建任务无法消耗输入流。
您给出的示例需要从过程标准输入中读取。因此,您必须明确告知mill以--interactive
(或简称为-i
)在交互式模式下运行。
$ mill -i server.run
[27/37] server.compile
[info] Compiling 1 Scala source to /tmp/zio-q/out/server/compile/dest/classes ...
[info] Done compiling.
[37/37] server.run
Hello! What is your name?
Peter
Hello, Peter, welcome to ZIO!
当使用附加的-i
(在任务名称之前)调用时,ZIO应用程序可以正确地从STDIN读取并打印问候语。