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

时间:2013-11-10 19:27:56

标签: scala emacs sbt jrebel ensime

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

这个设置非常好用,但是有一件事让我疯狂 - 无法自动编译/重新加载到sbt开始的Scala控制台。

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

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

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

事先得到很多赞赏。

1 个答案:

答案 0 :(得分:3)

sbt中有两件事可能:

  1. 通过在命令前添加~(代字号)前缀来自动重新编译由文件更改触发的项目源。 consoleconsole-quickconsole-project命令也可以作为前缀,但必须退出REPL才能进行重新编译(只需点击{{ 1}}等等。)

  2. 在触发控制台后立即自动执行REPL命令。它们可以定义为属性(例如在Ctrl+D中):

    build.sbt

    没有必要在initialCommands in console := """ import some.library._ def someFun = println("Hello") """ 中单独定义属性,因为它默认为consoleQuick中定义的属性,但是如果您想使用console命令必须单独定义它。

  3. 最后说明:记得在console-project文件中的每个属性之间留空行。他们需要正确解析属性。在上面的示例中,之间没有空行,这意味着所有内容都会进入*.sbt属性(这就是我们想要的内容。)