本文介绍了如何从另一个 inputTask 中调用 inputTask?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

In a inputTask I'm programmatically calling another inputTask, e.g. testOnly, with parameter string as follows:

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

不幸的是,我得到了一个异常非法动态引用,而不是结果.为什么?

Unfortunately instead of result I get an exception Illegal dynamic reference. Why?

推荐答案

我想我解决了我的问题.

I think I solved my problem.

  1. 我创建了一个将 testOnly inputTask 转换为带有参数的动态任务 (taskDyn) 的方法
  1. I created a method which converts testOnly inputTask to dynamic task (taskDyn) with parameter

def testOnlyWithDynamicParams(params: String) = Def.taskDyn {(testOnly 在测试中).toTask(params)}

  1. 我定义了一个动态输入任务(inputTaskDyn),它使用方法在最后转换和评估的值
  1. I defined an dynamic input task (inputTaskDyn) which uses method to convert and evaluates value at the end

readParams := Def.inputTaskDyn {...//这里有一些解析器代码val paramsForTestOnly = " *OnlyThisClassPls*"testOnlyWithDynamicParams(paramsForTestOnly)}.评估

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

I'm not sure if it is a best way but it works for me. If you know the better solution please correct me.

这篇关于如何从另一个 inputTask 中调用 inputTask?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 14:16