Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何定义新设置并为任务设置其值?_Scala_Sbt - Fatal编程技术网

Scala 如何定义新设置并为任务设置其值?

Scala 如何定义新设置并为任务设置其值?,scala,sbt,Scala,Sbt,我有一个myTask任务,它调用其他任务,如下所示: def myTask = Task <<= (Task1, Task2, Task3) map {(_,_,_)=>;} 一切正常 我现在需要的是创建另一个任务myTask2,该任务类似于myTask,但我想使用为tcWebApp设置的另一个目录来调用此任务,也就是说,该设置应该为任务设置另一个值。可能吗 我试过类似的方法 tcWebApp in myTask2 := file("newDir") 但它不起作用。请给出

我有一个
myTask
任务,它调用其他任务,如下所示:

def myTask = Task <<= (Task1, Task2, Task3) map {(_,_,_)=>;}
一切正常

我现在需要的是创建另一个任务
myTask2
,该任务类似于
myTask
,但我想使用为
tcWebApp
设置的另一个目录来调用此任务,也就是说,该设置应该为任务设置另一个值。可能吗

我试过类似的方法

tcWebApp in myTask2 := file("newDir") 
但它不起作用。请给出建议。

当你写:

`tcWebApp in myTask2` := ...
这并不意味着“当myTask2执行时,tcWebApp具有以下值”,正如您所希望的那样。它的意思是,“如果有人问myTask2它对tcWebApp有什么价值,它会回答如下。”它对tcWebApp的全局价值没有任何影响;如果没有人问过
myTask2
tcWebApp的值是多少,那么在该任务中设置它就没有任何效果。因此,
Task1
将继续使用
tcWebApp
的全局值

我发现了一些关于堆栈溢出的相关问题:

Daniel Sobral在这里写道:“根据我从你的问题中了解到的情况,你希望依赖项的设置不同,取决于依赖项的内容。这没有意义——依赖项要么满足,要么不满足,依赖项的内容不在等式中。”据我所知,这就是你问题的答案

为了解决这个问题,与其尝试将
Task1
Task2
作为任务重用,不如重用其中的代码。让
Task1
Task2
调用您定义的普通方法,然后让
myTask2
调用相同的方法,传递不同的参数。换句话说,不要试图解决你的设置问题;用普通的Scala代码解决它


或者,你可以采取另一种方法。如果将
myTask2
设置为命令而不是任务,则可以随心所欲。请参阅其中的“命令可以查看或修改其他sbt设置”。

感谢您的回复。事实上这不是我想要的。我有一些任务:
Taks1、Task2等。
任务采用build.sbt中定义的配置变量,在您的示例中是
mySetting
。我还有
myTask2
,它正在调用
Task1,Task2等。
当我调用
myTask2
时,我想在
Task1,Task2中有其他
mySetting
类似的东西:
myTask2(Task1(myTask中的mySetting))
啊,我现在明白了。答案完全重写了。
`tcWebApp in myTask2` := ...