如何从SBT中的资源(或其他项目文件)创建源文件
问题描述:
我想从作为项目组成部分的文件(我目前已将它们放在资源目录中,但这不是要求)中生成源文件。如何从SBT中的资源(或其他项目文件)创建源文件
这是我在它的尝试:
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 =>
什么是做这种正确的方法是什么?
答
发生了什么,最终的工作是这样的(由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
的重要的部分是读取任务内的设置。
我希望你是对的,但你能否举一个更具体的例子?到目前为止,我在他们的实验中没有取得成功。 – Suma