SBT和Scala-IDE中的同步增量编译

当我尝试使用SBT命令行和 Scala-IDE中的同一项目时,以相同的方式(即仅从命令行或仅从IDE)构建多次允许以递增方式重建项目.但是,如果我在SBT中编译项目,我注意到它必须在IDE中完全重建(反之亦然).有什么办法可以避免吗?如果重要,Eclipse项目将使用sbteclipse从SBT生成.

解决方法

对我来说,同时运行ScalaIDE和sbt~compile时的问题原因是ScalaIDE和sbt都使用相同的输出目录进行编译.这意味着他们覆盖了彼此编译的类,并将其检测为已更改,从而导致新的完全重新编译,而不是使用增量编译.

要修复它,请更改其中一个编译器的输出目录,执行以下操作之一:

>手动编辑:项目属性 – > Java构建路径 – >找到两个,主要和测试(通常是[project] / src / [test / main] / scala)的scala源文件夹,并将其输出文件夹编辑为默认值以外的其他文件夹(例如[project] / target / eclipse)
>在build.sbt中添加以下指令:

EclipseKeys.eclipseOutput := Some("target/eclipse")

两者都会将ScalaIDE编译器的编译输出目录更改为[project] / target / eclipse,其中project应该是项目目录的实际名称.

作为我如何调试此问题的提示,我使用sbt中的最后一个编译命令来查看上次编译(more about logging in sbt)的已记录调试信息.从调试信息中,您可以找到编译器认为哪些源更改以及哪些源由更改无效.事实证明,当使用sbt compile和ScalaIDE的相同输出目录时,每次运行时它们都会相互失效.

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...