Scala sbt控制台 - 代码更改未反映在sbt控制台中

C.K*_*hik 43 scala sbt

我使用scala sbt console来测试我的方法.(命令:sbt then console)但是在eclipse或其他外部编辑器中完成的代码更改并没有反映在sbt控制台中.

每次,我都必须退出控制台(使用Crt + D)并再次使用console命令启动它以查看更改.

任何人都面临这个问题?有没有办法从控制台重新加载代码?

我使用的是Ubuntu 64-Bit,

Sea*_*ons 33

并非没有使用像JRebel这样的东西,主要是因为类定义可能会破坏使实例已经加载不可用.我唯一的建议是使用~console运行控制台,这样如果已经进行了更改,它们将被重新编译并重新进入控制台.

此外,如果您经常运行一组命令,则initialCommands sbt设置会将命令配置为在启动控制台后立即运行.


Boz*_*sov 19

一个选项是:restart在控制台中使用- 这将重新加载它并重播您目前输入的所有命令.

要获得更好的解决方案,您可能需要阅读有关使用JRebel和Scala进行增量开发的博客文章.

您应该像这样修改sbt启动脚本:

#!/bin/bash

java -noverify -javaagent:/home/username/path/to/jrebel/jrebel/jrebel.jar
 -Drebel.lift_plugin=true -XX:+CMSClassUnloadingEnabled
 -XX:MaxPermSize=512m -Xmx512M -Xss2M -jar `dirname $0`/sbt-launch.jar
 "$@"
Run Code Online (Sandbox Code Playgroud)

从SBT内部启动REPL时,例如使用以下命令:

sbt console
Run Code Online (Sandbox Code Playgroud)

对导入的类的更改将自动反映,而无需执行:replayrestartREPL - 这让人联想到交互式Lisp编程.

  • 请注意,博客文章需要在后台进行Maven连续编译.如果你没有使用Maven,你可以用SBT连续编译打开第二个SBT进程:`〜; compile`. (2认同)