问题描述
在 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.
- 我创建了一个将 testOnly inputTask 转换为带有参数的动态任务 (taskDyn) 的方法
- I created a method which converts testOnly inputTask to dynamic task (taskDyn) with parameter
def testOnlyWithDynamicParams(params: String) = Def.taskDyn {(testOnly 在测试中).toTask(params)}
- 我定义了一个动态输入任务(inputTaskDyn),它使用方法在最后转换和评估的值
- 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?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!