如何更改依赖于新任务的现有核心任务?
E.g。我有一个新的任务创建一些文件夹,我想在编译中编译'依赖于此的任务,以便依赖于编译的所有任务(如test / package / run / etc)也创建这些文件夹。
在编译中重新定义'编译'
compile in Compile := {
createRepositoryFolder.value
(compile in Compile).value
}
导致循环引用错误。使用
compile <<= (compile in Compile) dependsOn createRepositoryFolders
似乎有效,但它似乎创造了一个新的编译&#39;任务不是由依赖于编译的任务运行的; &#39; createRepositoryFolders&#39;运行&#39;测试时不执行任务。或者&#39;运行&#39;任务。
使用&#39;检查编译&#39;确实显示了对&#39; createRepositoryFolders&#39;的依赖。任务,但&#39;检查测试&#39;确实显示了对编译&#39;的依赖性。任务,但不是在'createRepositoryFolders&#39;任务。
答案 0 :(得分:0)
我相信使用:=
运算符,您可以为任务compile in Compile
分配新值。
由于您在compile in Compile
的定义中引用了compile in Compile
,这就是您有循环依赖的原因。
您可能想要的是附加到任务而不是重新定义任务。有许多运算符可以将值附加到任务,例如+ =,&lt; + =,具体取决于您要分配的值的类型。
但是,由于您正在创建资源,因此您可能希望将任务添加到resourceManaged任务,而不是直接编译。
假设任务createRepositoryFolder返回Seq [File],您可以将以下内容添加到projectSettings:
(resourceManged in Compile) += createRepositoryFolder.taskValue
sbt docs
中有更多信息