我是Scala的新手,并为我的Scala开发使用emacs + ensime + sbt设置。
这个设置非常好用,但是有一件事让我疯狂 - 无法自动编译/重新加载到sbt开始的Scala控制台。
我经常使用REPL并且希望能够使用console
命令从sbt启动REPL并测试我对REPL中scala类的更改,而不必每次关闭它并重新加载。< / p>
我来自Erlang环境,使用Erlang这种开发方式很容易,但是对于SBT来说似乎很难。我安装了JRebel插件,但它似乎对我描述的情况不起作用。
是否有人能够做出类似的工作,并愿意分享配置步骤?
事先得到很多赞赏。
答案 0 :(得分:3)
sbt
中有两件事可能:
通过在命令前添加~
(代字号)前缀来自动重新编译由文件更改触发的项目源。 console
或console-quick
或console-project
命令也可以作为前缀,但必须退出REPL才能进行重新编译(只需点击{{ 1}}等等。)
在触发控制台后立即自动执行REPL命令。它们可以定义为属性(例如在Ctrl+D
中):
build.sbt
没有必要在initialCommands in console := """
import some.library._
def someFun = println("Hello")
"""
中单独定义属性,因为它默认为consoleQuick
中定义的属性,但是如果您想使用console
命令必须单独定义它。
最后说明:记得在console-project
文件中的每个属性之间留空行。他们需要正确解析属性。在上面的示例中,之间没有空行,这意味着所有内容都会进入*.sbt
属性(这就是我们想要的内容。)