【发布时间】:2015-12-23 22:59:04
【问题描述】:
在 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(" ")")
}
然后它抱怨 (logTask in TestCase).toTask(argsString).value 中的非法动态引用 argString
我也尝试过类似的方法:
runTask in TestCase := {
val args: Seq[String] = spaceDelimited("<arg>").parsed
log(args).value
runReg(args).value
}
其中还有一个非法的 args 动态引用。
有没有办法将解析后的参数传入两个任务并一个接一个地运行?
感谢您的帮助。
【问题讨论】:
-
你能发布你的整个构建文件吗?
-
gist.github.com/thejonathanwong/8757accdeabb568ae2b8 日志记录类位于一个 jar 中,该 jar 将添加到使用此插件的任何项目中。
-
看起来这可能是bug as of sbt 13.1