2012-04-12 81 views
11

我在指定SBT中的Scala源文件的自定义目录时遇到了一些麻烦。更改SBT中的Scala源代码目录

我想sbt从一个给定的目录而不是常规的src/main/scala目录编译scala文件。

我曾经尝试都定义名.bst和.scala项目文件,设置baseDirectoryscalaSource(在.scala文件和scalaSource小号)。我也玩弄了从系统绝对到相对路径的所有内容,但似乎没有任何工作。它无法在指定的目录下找到任何.scala文件。

有什么正确的方法来处理这个问题?

回答

20

build.sbt试试这个:

scalaSource in Compile <<= (sourceDirectory in Compile)(_/"foo") 

这将导致目录的src/main /富斯卡拉来源。如果你想使用一些任意目录下,去这样的:

scalaSource in Compile := file("/Users/heiko/tmp") 
+0

太棒了!这正是我所需要的。有趣的我从来没有碰到过这个。谢谢:) – 2012-04-13 11:24:39

+3

仅供将来参考;经过大量搜索后,我发现.scala文件没有被编译,因为src /下的所有内容都被忽略了,除了scala /和java /。解决方法是将dir添加到编译目录中,如下所示:编译+ =新文件(“/ dir/to/scala/src”中的sourceDirectories) – 2012-04-16 11:22:07

+1

不是最好的解决方案!你为什么重新定义sourceDirectories?通常你会更好地重新定义scalaSource。 – 2012-04-18 10:23:34

2

更新答案SBT 0.13.13 - >

sourceDirectory in Compile := (baseDirectory(_/"foo")).value

,并添加源目录(而不是只替换它)也用于SBT 0.13.13 - >

unmanagedSourceDirectories in Compile += (baseDirectory(_/"foo")).value

+0

这有点容易阅读:'sourceDirectory in Compile:= baseDirectory.value /“foo”'并且工作得很好。 – 2018-01-06 16:03:37