在编译时(在Scala中)将字符串常量定义为文件内容的简单方法是什么?

Ale*_*ers 1 scala

我想将Scala val定义为String,其值是文本文件的全部内容,在编译时读取.因此,在编译之后,这应该只是表现为字符串常量.

我觉得这应该是简单的,例如,Scala宏,但到目前为止,我无法弄清楚如何简单地获取String值.

Dae*_*yth 6

您可以创建一个在编译时执行的sbt 源生成任务 ; 这是从这些文档中复制的简单示例.根据需要将此文件内容转储到对象的val字段中并不难.

sourceGenerators in Compile += Def.task {
  val file = (sourceManaged in Compile).value / "demo" / "Test.scala"
  IO.write(file, """object Test extends App { println("Hi") }""")
  Seq(file)
}.taskValue
Run Code Online (Sandbox Code Playgroud)