【发布时间】:2010-09-27 12:20:24
【问题描述】:
FSC 每次都重新编译我的 .scala 文件,即使不需要 - 我可以编译两次,而无需在两次尝试之间编辑任何内容,然后重新编译它们! 例如,我有 2 个文件
Hello.scala
class Hello{
print("hello")
}
还有 Tokens.scala:
abstract class Token(val str: String, val start: Int, val end: Int)
{override def toString = getClass.getSimpleName + "(" + "[" + start + "-" + end + "]" + str + ")"}
class InputToken(str: String, start: Int, end: Int)
extends Token(str, start, end)
class ParsedToken(str: String, start: Int, end: Int, val invisible: Boolean)
extends Token(str, start, end)
当我要求 ant 从头开始编译项目时,我看到以下输出:
ant compile
init:
[mkdir] Created dir: D:\projects\Test\build\classes
[mkdir] Created dir: D:\projects\Test\build\test\classes
compile:
[fsc] Base directory is `D:\projects\Test`
[fsc] Compiling source files: somepackage\Hello.scala, somepackage\Tokens.scala to D:\projects\Test\build\classes
BUILD SUCCESSFUL
比我不编辑任何东西并再次询问ant compile:
ant compile
init:
[mkdir] Created dir: D:\projects\Test\build\classes
[mkdir] Created dir: D:\projects\Test\build\test\classes
compile:
[fsc] Base directory is `D:\projects\Test`
[fsc] Compiling source files: somepackage\Tokens.scala to D:\projects\Test\build\classes
BUILD SUCCESSFUL
如您所见,fsc 在 Hello.scala 的情况下表现得很聪明(没有重新编译)而在 Tokens.scala 的情况下表现得很愚蠢。我认为这个问题在某种程度上与继承有关,但仅此而已。
那么有什么问题呢?
【问题讨论】:
-
FSC 将编译所有内容,除非您向它传递标志告诉它进行传递依赖分析。你是如何在 Ant 中配置 Scala 编译任务的?
标签: scala compilation scalac