无论时间戳如何,SBT都会编译源文件

时间:2012-05-16 03:59:58

标签: scala sbt

我观察到SBT每次发出“编译”任务时都会编译所有源文件,而不管上次编译后的时间戳。以下是我的build.sbt文件:

name := "HelloSbt"

scalaVersion := "2.8.2"

unmanagedSourceDirectories in Compile := List(file("src"))

以下是我的项目结构(忽略项目和目标目录):

./src
./src/Hello1.scala
./src/a
./src/a/Hello2.scala
./build.sbt

这两个源文件只是用于测试目的的空对象定义。

当我输入“sbt compile”时,我收到了以下信息:

[info] Compiling 2 Scala sources to...

我可以在目标目录中找到新编译的类文件。

不修改任何源文件,一分钟后,再次输入“sbt compile”我得到了相同的信息和类文件,除了类文件的时间戳是最新的。我期待第二次编译找不到任何修改过的源文件,也不会发生编译。

我在Windows 7和Debian中都进行了测试。在测试期间,我没有打开任何编辑器。有人可以提供一些关于如何设置自定义src目录的提示,同时仍然只能编译自上次构建以来修改过的文件吗?

由于

1 个答案:

答案 0 :(得分:1)

那是因为您使用相对路径就好像它是绝对路径一样。我很惊讶它甚至会产生结果,但是,无论如何,你应该这样写:

unmanagedSourceDirectories in Compile <<= baseDirectory(base => List(base / "src"))