Caching cacheDirectory在0.13中不推荐使用…那么现在呢?
在sbt邮件列表中询问此问题,但显然是 我创建了一个围绕“sbt>clean”工作的程序,该程序将工件更新缓存目录吹走。 在0.12.4上运行良好,但在0.13中出现故障,我的自定义更新缓存目录在“sbt>update”之后为空 这相当于: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
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"