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

Build 如何为sbt项目指定自定义目录布局?,build,sbt,Build,Sbt,如何为基于sbt的项目指定自定义目录布局?我一直在看在线sbt材料,但我很难找到这些信息 我在文档中找到的是默认位置: 基本目录中的源 源代码位于src/main/scala和src/main/java 在src/test/scala和src/test/java src/main/resources和src/test/resources lib/ 如何在build.sbt文件中重写这些 我的项目结构目前如下: 源代码:[workspace]/sandboxscala/src/sbt/myF

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

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

  • 基本目录中的源
  • 源代码位于
    src/main/scala
    src/main/java
  • src/test/scala
    src/test/java
  • src/main/resources
    src/test/resources
  • lib/
如何在
build.sbt
文件中重写这些

我的项目结构目前如下:

  • 源代码:
    [workspace]/sandboxscala/src/sbt/myFirst/
  • 库位于:
    [workspace]/java-lib/common/lib/

感谢您的帮助。

您可以覆盖许多sbt的默认目录位置。下面是一个覆盖sbt希望在其中查找“非托管”依赖项/jar文件的目录的示例:

unmanagedBase := baseDirectory.value / "custom-jars-directory"
(更多与中的Dependencies相关的示例。)

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

scalaSource in Test := { (baseDirectory in Test)(_ / "test") }.value
然后您的核心应用程序源代码可以在其他地方,比如在
src/
下:

scalaSource in Compile := { (baseDirectory in Compile)(_ / "src") }.value
注意:对于较旧版本的
sbt
,您可能需要以下语法(现已弃用):


unmanagedBase SBT的文档已经改进,但是它仍然需要做更多的工作。我的代码(从非JVM语言移植而来)的布局中,测试与非测试源代码混合(但始终使用特定的“Test.extension”后缀),为了与现有的构建过程保持一致,不应在源代码区域中放置任何构建工件。甚至开始猜测如何设置SBT来实现这一点都是完全不明显的,尽管SBT的功能可能足够强大,实际上应该很容易做到。目前定制测试目录的语法是:
scalaSource in test:=baseDirectory.value/“test”
(与生产源代码的语法相同)。@MirMasej,我已经更新了答案以反映更新的语法。
unmanagedBase <<= baseDirectory { base => base / "custom-jars-directory" }
scalaSource in Compile <<= (baseDirectory in Compile)(_ / "src")