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


我是Scala

的新手,并且使用emacs + ensime + sbt设置进行Scala开发。

这个设置非常好,很轻巧,但有一件事让我发疯 - 无法自动编译/重新加载从 sbt 开始的 Scala 控制台中的更改。

我经常使用 REPL,

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

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

有没有人能够做类似的事情并愿意分享配置步骤?

提前非常感谢。

sbt有两件事可能:

  1. 通过在命令前面加上 ~(波浪号)来自动重新编译由文件更改触发的项目源。consoleconsole-quickconsole-project 命令也可以作为前缀,但您必须退出 REPL 才能进行重新编译(只需按 Ctrl+D 并等待即可。

  2. 导致在触发控制台后自动执行 REPL 命令。它们可以定义为属性(例如在build.sbt):

    initialCommands in console := """
    import some.library._
    def someFun = println("Hello")
    """
    
    没有必要

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

最后一点:请记住在*.sbt文件中的每个属性之间留空行。它们是正确分析属性所必需的。在上面的示例中,中间没有空行,因此这意味着所有内容都进入 initialCommands 属性(这就是我们想要的)。

相关内容

  • 没有找到相关文章

最新更新