Scala sbt console - изменения кода не отображаются в консоли sbt
Я использую консоль scala sbt для тестирования моих методов. (команды: sbt, а затем консоль). Но изменения кода, сделанные в eclipse или другом внешнем редакторе, не отражаются в консоли sbt.
Каждый раз мне нужно выйти из консоли (используя Crt + D) и снова запустить его с помощью команды console, чтобы увидеть изменения.
Кто-нибудь сталкивается с этой проблемой?
Есть ли способ перезагрузить код с консоли?
Я использую 64-битный Ubuntu,
Ответы
Ответ 1
Не без использования чего-то вроде JRebel, главным образом потому, что определения классов могут ломаться таким образом, чтобы сделать загруженные экземпляры непригодными для использования. Единственное, что у меня есть, это запустить консоль с помощью ~ console, чтобы в случае внесения изменений они будут перекомпилированы и консоль будет повторно введена.
Также, если вы регулярно запускаете набор команд, параметр initialCommands sbt настраивает команды, которые будут запускаться сразу после запуска консоли.
Ответ 2
Один из вариантов - использовать :restart
в консоли - это перезагрузит его и воспроизведет все команды, которые вы ввели до сих пор.
Для лучшего решения вам может понадобиться прочитать сообщение блога об инкрементальном развитии с помощью JRebel и Scala.
Вы должны изменить запуск sbt script следующим образом:
#!/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
"[email protected]"
Когда вы запускаете REPL изнутри SBT, например, с помощью команды:
sbt console
изменения импортированных классов будут автоматически отражаться без необходимости делать :replay
или restart
REPL - что-то напоминающее интерактивное программирование Lisp.