scala – 将参数传递给SBT中的多个任务
发布时间:2020-12-16 08:44:51 所属栏目:安全 来源:网络整理
导读:在sbt 0.13.9中,我希望能够运行一个任务,该任务从命令行接收参数,然后将这些参数传递给另外两个任务. 我最初的尝试是这样的: lazy val logTask = InputKey[Unit](...)lazy val runTask = InputKey[Unit](...)lazy val TestCase = config("testCase") extend
在sbt 0.13.9中,我希望能够运行一个任务,该任务从命令行接收参数,然后将这些参数传递给另外两个任务.
我最初的尝试是这样的: lazy val logTask = InputKey[Unit](...) lazy val runTask = InputKey[Unit](...) lazy val TestCase = config("testCase") extend Test runTask in TestCase := Def.inputTaskDyn { val args: Seq[String] = spaceDelimited("<arg>").parsed runReg(args) }.evaluated logTask in TestCase := Def.inputTaskDyn { val args: Seq[String] = spaceDelimited("<arg>").parsed log(args) }.evaluated def runReg(args: Seq[String]) = Def.taskDyn { val argString = args.mkString(" ") (logTask in TestCase).toTask(argString).value (testOnly in TestCase).toTask(s" $argString") } def log(args: Seq[String]) { (runMain in TestCase).toTask(s" LoggingClass $args.mkString(" ")") } 但后来它抱怨了一个非法动态参考argString(TestCase中的logTask).toTask(argsString).value 我也尝试过类似的东西: runTask in TestCase := { val args: Seq[String] = spaceDelimited("<arg>").parsed log(args).value runReg(args).value } 它还有args的非法动态参考. 有没有办法将解析后的参数传递给两个任务并一个接一个地运行? 谢谢你的帮助. 解决方法
而不是将args.mkString(“”)赋给变量,只需传递它而不分配给下面的任何变量:
(logTask in TestCase).toTask(args.mkString(" ")).value 更新1: 这种问题也可以用lazy initialization in sbt来解决.所以,试试如下: lazy val argString = args.mkString(" ") (logTask in TestCase).toTask(argString).value (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容