sbt资源未复制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sbt资源未复制相关的知识,希望对你有一定的参考价值。

似乎sbt(1.2.1,1.2.3)没有将资源文件(从src/main/resources)复制到目标目录。

构建是多项目的,根项目聚合subprj1(现在)。

显示如下:项目结构(主目录和一个资源文件:application.conf),resourceDirectory作为我们没有覆盖它的证明,成功编译的证据 - 但application.conf文件尚未复制到输出(target)目录。

试过sbt版本1.2.1,1.2.3。

为什么资源没有被复制到输出中,因为我们遵守标准目录结构?

项目结构

/main/project/home/dir/build.sbt
/main/project/home/dir/subprj1/src/main/resources
/main/project/home/dir/subprj1/src/main/resources/application.conf
/main/project/home/dir/subprj1/src/main/scala/com/myco/foo/bar/server/*.scala

IJ][subprj1@master] λ show resourceDirectory 
[info] subprj1 / Compile / resourceDirectory
[info]  /main/project/home/dir/subprj1/src/main/resources

build/sbt clean compile
...
[success] Total time: 22 s, completed Feb 8, 2019 3:10:04 PM

find . -name application.conf
./subprj1/src/main/resources/application.conf

如果我们在copyResources之后运行compile,它会起作用,但为什么这不是自动的?

build/sbt copyResources
find . -name application.conf
./subprj1/src/main/resources/application.conf
./subprj1/target/scala-2.12/classes/application.conf

我可以检查任务之间的依赖关系,我可以看到compile不依赖于copyResources,但它总是这样,或者这是最近的变化?我已经使用sbt多年了,我期望构建会自动将资源复制到输出。

build/sbt -Dsbt.log.noformat=true "inspect tree compile" > t.txt

答案

事实证明有人将下面的设置添加到build.sbt。一旦我注释掉这些行,资源就开始被复制到输出目录。

, unmanagedResourceDirectories in Compile := Seq() , unmanagedResourceDirectories in Test := Seq()

以上是关于sbt资源未复制的主要内容,如果未能解决你的问题,请参考以下文章

将特定目录及其内容添加到Universal目标

sbt-android:IntelliJ 将 android 支持资源的使用情况标记为红色

如何配置 sbt 在运行应用程序时加载资源?

未解决的对“片段”部分中的符号“”的引用

未找到段“x”的资源

未找到 SBT 主类“未”