如何使用SBT配置将其他文件添加到不是java或scala文件的类路径?

exp*_*ert 2 scala sbt

如何使用SBT配置将其他文件添加到不是java或scala文件的类路径?

我的源文件夹是这样定义的

javaSource in Compile := baseDirectory.value / "src"
Run Code Online (Sandbox Code Playgroud)

jawr.properties在我的/src文件夹的根目录中.我希望将此文件复制到WEB-INF/classes我的打包应用程序中.我尝试将过滤器更改为

includeFilter in (Compile, unmanagedSources) := "*.java" || "*.scala" || "jawr.properties",
Run Code Online (Sandbox Code Playgroud)

但它失败了,sbt compile因为它试图将其编译为java文件.

我在SBT 0.13.6上

Cyä*_*gha 5

SBT的理念是尽可能按惯例(而不是配置)工作.因此,在许多情况下,最直接的解决方案是不要寻找正确的设置来告诉SBT您的文件在哪里......而是要找出SBT已经期望找到它们的位置.您可以查看"SBT入门"指南的此页面了解基础知识.

对于需要与编译类一起打包的资源文件,默认目录是src/main/resources(从Maven借来的约定,与大多数SBT的默认目录结构一样).同样,文件src/test/resources也会添加到类路径中,但仅限于测试期间.

如果由于某种原因,您想要使用非标准目录,则需要查看文档的此页面.对于资源,修改的关键是resourceDirectory:

// resources in `resources` instead of `src/main/resources` :
resourceDirectory in Compile := baseDirectory.value / "resources"

// test resources in `test-resources` instead of `src/test/resources` :
resourceDirectory in Test := baseDirectory.value / "test-resources"
Run Code Online (Sandbox Code Playgroud)