当我尝试从 SBT 命令行和 Scala-IDE 使用同一个项目时,以相同的方式多次构建(即仅从命令行或仅从 IDE)允许以增量方式重建项目。但是,如果我在 SBT 中编译项目,我注意到它必须在 IDE 中完全重建(反之亦然)。有什么办法可以避免吗?如果重要的话,Eclipse 项目是使用 sbteclipse 从 SBT 生成的。
最佳答案
对我来说,同时运行 ScalaIDE 和 sbt ~compile 的问题是事实证明,ScalaIDE 和 sbt 使用相同的输出目录进行编译。这意味着它们会覆盖彼此编译的类,并将检测到它们发生了变化,从而导致新的完全重新编译,而不是使用增量编译。
要修复它,请执行以下操作之一更改其中一个编译器的输出目录:
build.sbt
中: EclipseKeys.eclipseOutput := Some("target/eclipse")
两者都会将 ScalaIDE 编译器的编译输出目录更改为
[project]/target/eclipse
,其中 project
应该是项目目录的实际名称。作为我如何调试这个问题的提示,我在 sbt 中使用了
last compile
命令来查看上次编译 ( more about logging in sbt ) 记录的调试信息。从调试信息中,您可以找出编译器认为已更改的源以及因更改而无效的源。事实证明,当对 sbt compile 和 ScalaIDE 使用相同的输出目录时,它们每次运行时都会相互无效。关于scala - SBT 和 Scala-IDE 中的同步增量编译,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22660762/