【发布时间】:2015-10-03 05:36:18
【问题描述】:
我正在 SBT 中写Autoplugin。该插件应该生成一些文件到resourceManaged。使用下面的代码(正在进行中),我在运行compile 时看不到FOOO 输出,但是当我直接使用yamlGen 调用任务时看到它,这让我认为出于某种原因我的任务未正确添加为资源生成器。我检查了一堆其他的生成器插件,他们几乎都是这样做的。这里有什么问题?
import sbt._
import Keys._
object SamplePlugin extends AutoPlugin {
override def trigger = allRequirements
val yamlSourceFolder = SettingKey[File](
"yaml-source-folder",
"description"
)
val yamlSources = SettingKey[Seq[File]](
"yaml-sources",
"description"
)
val outputFolder = SettingKey[File](
"output-folder",
"description"
)
val yamlGen = TaskKey[Seq[File]](
"yaml-gen",
"description"
)
def yamlSettings(conf: Configuration): Seq[Setting[_]] = inConfig(conf)(Seq(
yamlSourceFolder <<= (sourceDirectory in Compile) { _ / "yamin" },
yamlSources <<= yamlSourceFolder { srcDir => (srcDir ** "*.yaml").get },
outputFolder <<= (resourceManaged in Compile) { _ / "yamout" },
yamlGen <<= (streams, yamlSources, outputFolder).map {
(out, sources, outputDir) =>
println("FOOO")
// implement me
(outputDir ** "*.abc").get
},
resourceGenerators <+= yamlGen
))
override def projectSettings = yamlSettings(Compile)
}
【问题讨论】:
标签: sbt