2013-03-18 99 views
8

如何为基于sbt的项目指定自定义目录布局?我一直在寻找网上sbt材料,但我在努力寻找此信息...如何为sbt项目指定自定义目录布局?

我没有找到文档中是默认位置:

  • 来源的基本目录
  • 源在src/main/scalasrc/test/scalasrc/main/java
  • 测试和src/test/java
  • 数据文件src/main/resourcessrc/test/resources
  • 非托管的JAR文件lib/

如何在build.sbt文件来覆盖这些?

我的项目结构是目前如下:

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

任何帮助表示赞赏。

回答

4

可以覆盖许多sbt的默认目录位置。下面是覆盖在那里SBT希望找到“非托管”的依赖性/ JAR文件的目录为例:(。在the sbt documentation有关depndencies更多的例子)

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

您还可以配置目录,具体到一个特定的“任务” ......例如,设置在那里的测试用例源代码的目录,请尝试:

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 , 我相信)。

+0

谢谢,感谢:) – 2013-05-10 16:35:10

+0

SBT的文档已经改进,但它仍然需要更多的工作。 我有一个代码(从非JVM语言移植)与布局测试混合(但一致使用特定的“Te​​st.extension”后缀)与非测试源代码,以及在哪里与现有的构建过程,在源代码区域不应该放置构建工件。甚至开始猜测如何设置SBT来完成这一点是完全不明显的,尽管可以推测SBT足够强大以至于它实际上应该是相当微不足道的。 – newbrific 2014-09-01 03:28:00

+0

当前用于定制测试目录的语法是:'test中的scalaSource:= baseDirectory.value /“test”'(同样的语法用于生成源代码)。 – MirMasej 2016-12-31 12:54:39