看来sbt(1.2.1,1.2.3)并未将资源文件(从src/main/resources
复制到目标目录。
该构建是多项目的,其根项目汇总了subprj1
(目前)。
如下所示:项目结构(主目录和一个资源文件:application.conf
),resourceDirectory
证明我们没有重写它,成功编译的证明-而{{1} }文件尚未复制到输出(application.conf
)目录。
试用sbt版本1.2.1、1.2.3。
由于我们遵守标准目录结构,为什么资源没有复制到输出中?
项目结构
target
如果我们在/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
,但是它总是这样吗,还是最近的变化?我已经使用sbt多年了,因此我期望该构建将复制资源以自动输出。
copyResources
答案 0 :(得分:1)
事实证明有人将以下设置添加到build.sbt
。一旦注释掉这些行,资源便开始被复制到输出目录。
, unmanagedResourceDirectories in Compile := Seq()
, unmanagedResourceDirectories in Test := Seq()