将 Finatra 与 SBT 一起使用,在哪里搜索文件?

Using Finatra with SBT, where are the files searched for?

Finatra 在哪里搜索文件?当我写

response.ok.file(...)

文件应该放在哪个文件夹中才能找到?

docs 中它说 "classpath root" 无处可寻(因为它不存在,严格来说)。

它将在资源文件夹中搜索

src/main/resources

在下面的示例中,资源中有一个 web 文件夹

  get("/:*") { request: Request =>
    response.ok.fileOrIndex(
      s"web/${request.params("*")}",
      "web/index.html")
  }

如果您使用的是 intellijIdea,则必须确保配置中定义的所有资源类型:

编译器->资源模式

否则编译时不会复制到输出文件夹

将从资源文件夹中获取的文件复制到以下位置:

target/scala-2.12/classes

对于 Scala 2.12,但对于将在 运行 期间创建的文件,此路径将不可用,即进程将仅查找在执行 sbt run 之前创建的文件。对于根项目和子项目都是如此(这取决于 运行 的执行位置)。

如果您需要始终加载文件,则需要设置标志 -local.doc.root