如何从另一个inputTask中调用inputTask?

时间:2015-01-12 08:25:55

标签: sbt

inputTask我以编程方式调用另一个inputTask,例如testOnly,参数字符串如下:

val readParams = inputKey[Unit]("reads version")
readParams := {
  ... // here some Parser code
  val a = "*OnlyThisClassPls*"
  testOnly.toTask(a)
}

不幸的是,我得到了异常Illegal dynamic reference而不是结果。为什么呢?

1 个答案:

答案 0 :(得分:2)

我想我解决了我的问题。

  1. 我创建了一个方法,使用参数
  2. testOnly inputTask转换为动态任务( taskDyn

    def testOnlyWithDynamicParams(params: String) = Def.taskDyn { (testOnly in Test).toTask(params) }

    1. 我定义了一个动态输入任务( inputTaskDyn ),该任务使用方法转换并在最后评估的值
    2. readParams := Def.inputTaskDyn { ... // here some Parser code val paramsForTestOnly = " *OnlyThisClassPls*" testOnlyWithDynamicParams(paramsForTestOnly) }.evaluated

      我不确定这是否是最佳方式,但它对我有用。如果你知道更好的解决方案,请纠正我。