Мне удалось заставить это работать в моей среде разработки с помощью агента Spring Loaded JVM. Хотя я разрабатываю веб-приложения Spring, в описании этого проекта упоминается, что это
можно использовать с любым байт-кодом, который может работать на JVM
Используя следующую настройку, я смог получить изменения для автоматической публикации в подключенном экземпляре Tomcat (обычный метод Eclipse WTP). Я использую Spring Tool Suite 3.7.3 на основе Eclipse Mars.2 (4.5.2).
- Загрузите последний выпуск JAR Spring Loaded из их проекта Github . Это было протестировано с помощью springloaded-1.2.5.RELEASE.jar.
- Настройте Tomcat Server в Eclipse как обычно (проверено с Tomcat 8.0.30)
- Откройте страницу конфигурации Tomcat Server в Eclipse (дважды щелкните экземпляр сервера на вкладке «Серверы»).
- В разделе «Параметры сервера» снимите флажок «Автоматическая перезагрузка модулей по умолчанию».
- Примечание. Если у вас уже есть веб-модули, добавленные на сервер, вам может потребоваться отключить «Автоматическую перезагрузку» для них по отдельности на вкладке «Модули» (внизу окна страницы конфигурации).
- В разделе «Общая информация» нажмите «Открыть конфигурацию запуска».
- На вкладке «Аргументы» добавьте следующее в конец «Аргументы ВМ»:
-javaagent:/path/to/downloaded/springloaded-1.2.5.RELEASE.jar -noverify
- Чтобы включить просмотр JAR-файлов в дополнение к
.class
файлам проекта , настройте -Dspringloaded=watchJars=
аргумент VM в соответствии с комментариями к этой проблеме .
Запустите сервер и опубликуйте на нем проекты динамических веб-приложений, как обычно. Опять же, я смог проверить это с помощью веб-приложений Spring. Например, изменение кода, методы добавления / вычитания и т. Д. В классах @Controller применялись почти сразу после того, как я сохранил файл и Eclipse построил и опубликовал измененный класс. Наконец, в разделе часто задаваемых вопросов проекта Spring Loaded упоминается несколько случаев, когда что-то не перезагружается, поэтому для этого потребуется перезапуск сервера / приложения. Но эти исключения гораздо реже.
Еще одно замечание: это НЕ работает со встроенным сервером Pivotal tc Server или VMware vFabric tc Server, который поставляется с STS. Для этих серверов есть опция «Включить перезагрузку на основе агента Java (экспериментальная)», но для этого используется более старая версия Spring Loaded 1.2.0, которая у меня не сработала.