我有一个带有多个子项目的sbt构建,当尝试使用scala.io.source.fromFile
时,它尝试从根项目而不是从每个单独的子项目中读取文件。这是我在某些情况下需要的,但在其他情况下我想使用根资源。
使用子项目从SBT中读取子项目和根资源文件夹的惯用方法是什么?
答案 0 :(得分:2)
这取决于您从哪个范围调用resourceDirectory
。以下是使用一个根项目和两个子项目(来自sbt REPL)的构建示例:
> resourceDirectory
[info] alpha/compile:resourceDirectory
[info] /Users/xyz/sbt-tutorial/sub-projects/sub-a/src/main/resources
[info] beta/compile:resourceDirectory
[info] /Users/xyz/sbt-tutorial/sub-projects/sub-b/src/main/resources
[info] root/compile:resourceDirectory
[info] /Users/xyz/sbt-tutorial/sub-projects/src/main/resources
如您所见,调用alpha/compile:resourceDirectory
将获得名为alpha
的子项目的资源目录。
如果你想要这个sbt DSL表示法,它将是:
myTask := {
val resDir = (resourceDirectory in (alpha, Compile)).value
...
}
如果要获取根项目的资源目录,可以用alpha
替换ThisBuild
等。