Горячая перезагрузка Play Framework (2.4), sbt (0.13.17) и причина полной компиляции проекта - PullRequest
0 голосов
/ 29 мая 2019

Что-то в данный момент кажется неправильным с моим проектом веб-приложения и его внутренними зависимостями: если я изменю body открытого, нестатического метода Java для определенных классов, весь мой проект будет перекомпилирован.Это огромная трата моего времени, как я могу отладить и исправить это?

Если возможно, я бы хотел, чтобы sbt рассказал мне дерево инкрементных зависимостей компиляции (т. Е. Изменение «myMethod» вызывает перекомпиляцию классовA1 и B1, перекомпиляция триггеров A перекомпилирует A2, перекомпиляция триггеров B1 перекомпилирует B2, и т. Д. Это, вероятно, даст мне некоторую подсказку. Это вообще существует?

1 Ответ

2 голосов
/ 29 мая 2019

В Play Framework нет ничего плохого, когда изменение / модификация кода приводит к повторной компиляции.В основном это фреймворк Play под названием «Горячая перезагрузка».

Теперь перейдя ко второй части вашего вопроса, вам нужно понять, как работает горячая перезагрузка игры

Допустим, ваш игровой сервер работает, и вы вносите изменения в код.Затем выполняются следующие шаги:

  1. Он компилирует ваш файл класса и проверяет наличие проблем с компиляцией.
  2. Затем компилирует оставшийся код, чтобы проверить, не нарушает ли новое изменение кода какую-либо другую частьcode.
  3. Если возникнет какая-либо проблема с компиляцией, возникнет исключение.
  4. Если компиляция прошла успешно, нам необходимо обновить загруженные классы в JVM.Для этого мы просто удаляем старый загрузчик классов приложения и создаем новый с обновленными классами.
  5. Приложение Play перезапускается.

Подводя итог, play framework отбрасывает старый загрузчик классов исоздает новый с обновленными классами и, следовательно, завершенный проект перекомпилируется снова.

Надеюсь, что ответ на ваш вопрос !!!

...