我想从作为项目一部分的文件中生成源代码(我目前已将它们放在资源目录中,但这不是必需的。)
这是我的尝试:
sourceGenerators in Test += (sourceManaged in Test map { src =>
(unmanagedResourceDirectories in Test).value map { dir =>
val file = dir / "demo" / src.name
IO.write(file, "Prefix---" + IO.read(src) + "---Postfix")
file
}
}).taskValue
这给了我一个错误:
error: Illegal dynamic dependency (unmanagedResourceDirectories in Test).value map { src =>
这样做的正确方法是什么?
答案 0 :(得分:1)
最终起作用的是(受this code启发,在对问题SBT sourceGenerators task - execute only if a file changes的评论中引用):
sourceGenerators in Test += Def.task {
val sources = (unmanagedResources in Test).value filter ( _.isFile )
val dir = (sourceManaged in Test).value
sources map { src =>
IO.write(dir / src.name, "Prefix---" + IO.read(src) + "---Postfix")
f
}
}.taskValue
重要的部分是阅读任务内部的设置。
答案 1 :(得分:0)