Как выполнить автоматическую перезагрузку/горячую замену с помощью gradle и scala?

У меня есть серверное приложение Scala, которое использует gradle и scala и application плагины для сборки и запуска. Я запускаю приложение с gradle run.

Часть моего градиента. Типичный, на самом деле:

...
apply plugin: 'scala'
apply plugin: 'application'
...
mainClassName = "mypackage.Main"

Как автоматически перекомпилировать и перезапускать приложение всякий раз, когда я изменяю исходный код?
Предпочтительно использовать CLI и gradle без использования IDE. Кроме того, я слышал, что аналогичная функция есть в sbt, но я не собираюсь использовать sbt.


person Hossam El-Deen    schedule 20.11.2017    source источник


Ответы (2)


Я думаю, что вы можете использовать решение тега --continous:

В терминале:

gradle build --continuous

В другом терминале:

gradle run
person Tremo    schedule 24.01.2018
comment
Спасибо, но, к сожалению, это не работает :(. Он перестраивается, но запущенное приложение не перезапускается и не затрагивается. - person Hossam El-Deen; 24.01.2018

Я пробовал gradle run --continuous, но не работал, потому что задача run никогда не заканчивается, и кажется, что --continuous не запускает новую сборку/задачу, пока предыдущая не завершена.

Итак, самое близкое решение, которое я мог бы достичь, это:

  • Добавьте конечную точку, которая закрывает приложение.
  • Сделайте настройку таким образом, чтобы вы могли вызывать конечную точку одним щелчком мыши.
  • Выполнить gradle run --continuous.
  • Если вы вносите изменения в исходный код и хотите перезапустить приложение, вызовите конечную точку.

Да, это не совсем «автоматическая перекомпиляция и перезапуск», но это самое близкое, что я мог достичь. Также, конечно, не оставляйте в коде ненужные конечные точки; либо сделайте его автоматически недоступным в рабочей среде, либо вообще не применяйте это решение.

person Hossam El-Deen    schedule 15.02.2018