如何为sbt项目指定自定义目录布局?

时间:2013-03-18 11:56:32

标签: build sbt

如何为基于sbt的项目指定自定义目录布局?我一直在查看在线sbt资料,但我很难找到这些信息......

我在文档中找到的是默认位置:

  • 基本目录中的来源
  • src/main/scalasrc/main/java
  • 中的来源
  • src/test/scalasrc/test/java
  • 中进行测试
  • src/main/resourcessrc/test/resources
  • 中的数据文件
  • lib/
  • 中的非托管jar文件

如何在build.sbt文件中覆盖这些内容?

我的项目结构目前如下:

  • 来源:[workspace]/sandbox-scala/src/sbt/myFirst/
  • 图书馆:[workspace]/java-lib/common/lib/

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:4)

可以覆盖许多sbt的默认目录位置。这是一个覆盖sbt期望找到“非托管”依赖项/ jar文件的目录的示例:

unmanagedBase := baseDirectory.value / "custom-jars-directory"

(更多与the sbt documentation中的依赖关系相关的例子。)

您还可以将目录配置为特定于“任务”...例如,设置测试用例源代码所在的目录,尝试:

scalaSource in Test := { (baseDirectory in Test)(_ / "test") }.value

然后您的核心应用程序源代码可能位于其他位置,例如src/下:

scalaSource in Compile := { (baseDirectory in Compile)(_ / "src") }.value

注意:对于sbt的旧版本,您可能需要以下(现已弃用)语法:

unmanagedBase <<= baseDirectory { base => base / "custom-jars-directory" }
scalaSource in Compile <<= (baseDirectory in Compile)(_ / "src")

此语法不适用于较新版本的sbt(我相信自0.13.13起)。