Caching cacheDirectory在0.13中不推荐使用…那么现在呢?

Caching cacheDirectory在0.13中不推荐使用…那么现在呢?,caching,task,sbt,updates,Caching,Task,Sbt,Updates,在sbt邮件列表中询问此问题,但显然是 我创建了一个围绕“sbt>clean”工作的程序,该程序将工件更新缓存目录吹走。 在0.12.4上运行良好,但在0.13中出现故障,我的自定义更新缓存目录在“sbt>update”之后为空 这相当于: cacheDirectory <<= baseDirectory / "sbt-no-clean" 我得到了一个返回类型不匹配,一个令人恼火的错误,因为我不知道如何转换: sbt.Def.Initialize[sbt.Task[Seq[java

在sbt邮件列表中询问此问题,但显然是

我创建了一个围绕“sbt>clean”工作的程序,该程序将工件更新缓存目录吹走。 在0.12.4上运行良好,但在0.13中出现故障,我的自定义更新缓存目录在“sbt>update”之后为空

这相当于:

cacheDirectory <<= baseDirectory / "sbt-no-clean"
我得到了一个返回类型不匹配,一个令人恼火的错误,因为我不知道如何转换:

sbt.Def.Initialize[sbt.Task[Seq[java.io.File]]]
进入

赞赏的想法, 谢谢

编辑
如果使用“应用”而不是“映射”:

cleanKeepFiles <<= streams.apply{_.map(x=>Seq(x.cacheDirectory))}
这似乎越来越近了,但编译器希望:

Seq[java.io.File]
cleanKeepFiles
的类型为
SettingKey[Seq[文件]]


对于如何从流的类型中获取
SettingKey[Seq[File]]
,我并不感到困惑:
TaskKey[TaskStreams]

完全忘记了发布这个问题,谢天谢地,解决方案非常简单:

cleanKeepFiles <+= base / pathToCacheDir

cleankepfiles简单地将
cacheDirectory
更改为
target
在我的情况下起作用:

发件人:

cacheDirectory <<= baseDirectory / "sbt-no-clean"

cacheDirectory如果使用新的0.13语法,如
set cleanKeepFiles:=Seq(streams.value.cacheDirectory)
则错误消息是明确的:
error:设置不能依赖于任务
,这似乎表明在类型对齐之前,这不仅仅是一个摆弄的问题。希望其他人有更深入的见解。@SethTisue我确实想出了一个解决方案,但忘了我在上面贴了这个问题;-)你是说
cleanKeepFiles
Seq[java.io.File]
cleanKeepFiles <+= base / pathToCacheDir
cacheDirectory <<= baseDirectory / "sbt-no-clean"
target <<= baseDirectory / "sbt-no-clean"