15

我是 Scala 的新手,并且在我的 Scala 开发中使用 emacs + ensime + sbt 设置。

这个设置非常好而且很轻,但有一件事让我抓狂——无法从 sbt 开始将更改自动编译/重新加载到 Scala 控制台中。

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

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

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

非常感谢提前。

4

1 回答 1

5

有两件事可能sbt

  1. ~通过在命令前加上(波浪号),导致由文件更改触发的项目源的自动重新编译。, consoleor console-quick, orconsole-project命令也可以加前缀,但是你必须退出 REPL 才能进行重新编译(只需点击Ctrl+D并等待。)

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

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

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

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

于 2013-11-11T00:54:38.337 回答