Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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 如果输入文件已更改*或*设置已更改,则执行sbt任务_Scala_Sbt - Fatal编程技术网

Scala 如果输入文件已更改*或*设置已更改,则执行sbt任务

Scala 如果输入文件已更改*或*设置已更改,则执行sbt任务,scala,sbt,Scala,Sbt,我有一个任务,它将根据几个输入文件以及一些sbt设置生成一个输出文件。它基本上就像一个编译器,其结果由输入文件和设置(如编译器标志)决定。因此,如果输入文件或设置发生更改,我需要重新生成结果 这对我来说似乎是一件很平常的事情,虽然我确实有一个可行的解决方案,但它看起来很难看而且冗长。有更好(更简单和/或更短)的方法吗 import java.nio.file.Path 导入sbt.nio.Keys_ 进口sbt_ 导入sbt.Keys_ 导入sbt.nio.file.FileTreeView 导

我有一个任务,它将根据几个输入文件以及一些sbt设置生成一个输出文件。它基本上就像一个编译器,其结果由输入文件和设置(如编译器标志)决定。因此,如果输入文件或设置发生更改,我需要重新生成结果

这对我来说似乎是一件很平常的事情,虽然我确实有一个可行的解决方案,但它看起来很难看而且冗长。有更好(更简单和/或更短)的方法吗

import java.nio.file.Path
导入sbt.nio.Keys_
进口sbt_
导入sbt.Keys_
导入sbt.nio.file.FileTreeView
导入sjsonnew_
类StuffConfig
对象填充配置{
隐式val fmt:JsonFormat[StuffConfig]=???//省略
}
对象填充插件扩展了AutoPlugin{
对象自动导入{
val generateStuff=taskKey[File](“生成素材”)
val stuffConfig=settingKey[stuffConfig](“填充配置”)
val stuffInputFiles=settingKey[Seq[Glob]](“填充输入”)
val stuffOutput=设置键[文件](“填充输出”)
}
def doTheThings(cfg:StuffConfig,files:Seq[Path])=???//省略
覆盖def项目设置:Seq[定义设置[]]={
导入自动导入_
序号(
generateStuff/fileInputs:=stuffInputFiles.value,
generateStuff:={
val store=streams.value.cacheStoreFactory.make(“stuffCache”)
val filesChanged=generateStuff.inputFileChanges.hasChanges
val输出=stuffOutput.value
Tracked.inputChanged[StuffConfig,File](存储){(configChanged,config)=>
if(configChanged | | | fileChanged | |!output.exists){
doTheThings(config,FileTreeView.default.list(stuffInputFiles.value).map(u._1))
}
输出值
}.apply(stuffConfig.value)
}
)
}
}