我是 Scala 新手,刚开始使用 emacs + ensime + sbt 设置进行 Scala 开发。
这个设置非常漂亮和轻便,但有一件事让我抓狂 - 无法自动编译/重新加载从 sbt 开始的 Scala 控制台中的更改。
我经常使用 REPL,并且希望能够使用
console
命令从 sbt 启动 REPL,并测试我对 REPL 中对 scala 类的更改,而无需在每次进行更改时关闭它并重新加载。
我来自Erlang环境,这种开发方式用Erlang很容易,但用SBT似乎很难。我安装了 JRebel 插件,但它似乎不适用于我描述的情况。
有人能够做类似的工作并且愿意分享配置步骤吗?
提前非常感谢。
sbt
有两种可能:
通过在命令前添加
~
(波形符)来自动重新编译由文件更改触发的项目源。 console
、console-quick
、console-project
命令也可以添加前缀,但是您必须退出 REPL 才能进行重新编译(只需点击 Ctrl+D
并等待。)
在启动控制台后立即自动执行 REPL 命令。它们可以被定义为属性(例如在
build.sbt
中):
console / initialCommands := """
import some.library._
def someFun = println("Hello")
"""
无需在
consoleQuick
中单独定义该属性,因为它默认为 console
中定义的属性,但如果您想使用 console-project
命令,您必须 单独定义它。
最后一点:记住在
*.sbt
文件中的每个属性之间留空行。它们对于正确解析属性是必要的。在上面的示例中,中间没有空行,因此这意味着所有内容都进入 initialCommands
属性(这就是我们想要的。)