如何将更改后的 scala 类自动重新加载到 SBT REPL 中

问题描述 投票:0回答:1

我是 Scala 新手,刚开始使用 emacs + ensime + sbt 设置进行 Scala 开发。

这个设置非常漂亮和轻便,但有一件事让我抓狂 - 无法自动编译/重新加载从 sbt 开始的 Scala 控制台中的更改。

我经常使用 REPL,并且希望能够使用

console
命令从 sbt 启动 REPL,并测试我对 REPL 中对 scala 类的更改,而无需在每次进行更改时关闭它并重新加载。

我来自Erlang环境,这种开发方式用Erlang很容易,但用SBT似乎很难。我安装了 JRebel 插件,但它似乎不适用于我描述的情况。

有人能够做类似的工作并且愿意分享配置步骤吗?

提前非常感谢。

scala emacs sbt jrebel ensime
1个回答
6
投票

sbt
有两种可能:

  1. 通过在命令前添加

    ~
    (波形符)来自动重新编译由文件更改触发的项目源。
    console
    console-quick
    console-project
    命令也可以添加前缀,但是您必须退出 REPL 才能进行重新编译(只需点击
    Ctrl+D
    并等待。)

  2. 在启动控制台后立即自动执行 REPL 命令。它们可以被定义为属性(例如在

    build.sbt
    中):

     console / initialCommands := """
     import some.library._
     def someFun = println("Hello")
     """
    

无需在

consoleQuick
中单独定义该属性,因为它默认为
console
中定义的属性,但如果您想使用
console-project
命令,您必须 单独定义它。

最后一点:记住在

*.sbt
文件中的每个属性之间留空行。它们对于正确解析属性是必要的。在上面的示例中,中间没有空行,因此这意味着所有内容都进入 initialCommands 属性(这就是我们想要的。)
    

© www.soinside.com 2019 - 2024. All rights reserved.