2014-11-10 8 views
3

Мое приложение: Tomcat 8, Spring, Spring MVC, Hibernate.Eclipse vs IntelliJ Hot Deploy

В Eclipse я создал Tomcat Server с моим приложением, добавленным в ресурсы. Развертывание JSP, JS, CSS и JAVA работает именно так.

В IntelliJ я настроил сервер Tomcat 8. На вкладке «Развертывание» я добавил myapp:war exploded. Я включил On 'update' action в Update classes and resources, также я включил On frame deactivation: Update classes and resources. JSP, JS, горячая замена CSS работает именно так. Классы Java не.

Я также проверил Settings > Build, exection, deployment > Compiler > Make project automatically

PS. Я знаю, что могу использовать JRebel, но в Eclipse горячее развертывание работает без JRebel. Почему это не работает в IntelliJ?

ответ

7

Прежде всего, название функции не «горячее развертывание», а HotSwap. Это особенность JVM, а не IDE. IDE просто автоматизируют процесс и автоматически запускают HotSwap измененного класса, когда есть новая версия класса. HotSwap ограничивается только изменениями, которые могут быть внесены в тело существующего метода.

В IntelliJ, перейдите в Настройки-> Debugger-> HotSwap и проверьте настройки:

HotSwap settings

Включить классы Reload в фоновом флажком, а затем вы можете выбрать поведение, если IDE спросить вы о hotswapping классы, hotswap молча, или никогда не hotswap классов.

Вы должны скомпилировать вручную. Но, если приложение развертывается из «артефакта», тогда «Выполнение проекта автоматически» работает для запущенного приложения, даже если оно говорит противоположное («Настройки» -> «Компилятор»). Однако неудобство состоит в том, что автоматическая компиляция запускает с задержкой, поэтому это не так быстро, как можно было бы ожидать.Сборка вручную так же просто, как нажать CTRL + S в Eclipse, просто CTRL + F9/CMD + F9, чтобы сделать проект (который на самом деле инкрементный) или CTRL + SHIFT + F9/CMD + SHIFT + F9, если вы хотите скомпилировать один файл.

Я бы порекомендовал JRebel для улучшения опыта, так как он далеко продвинулся beyond what HotSwap can do, и он интегрируется с large number of Java frameworks, чтобы устранить передислокации. И да, я предвзятый - я работаю для ZeroTurnaround, и я занимаюсь разработкой JRebel.

UPDATE:

Первоначальный вопрос был скорее об автоматическом перераспределении веб-приложения в Tomcat/IntelliJ В конфигурации Run, вы можете настроить, что должно быть сделано для действия «Обновить»:

Update action

Действие «Обновить» вызывается вручную. CTRL + SHIFT + /CMD + SHIFT + , и поиск 'Update':

enter image description here

Таким образом, передислокация является достаточно «один клик «ручной процесс в IntelliJ.

+0

http://manuals.zeroturnaround.com/jrebel/misc/frameworks.html is 404 – koppor

+0

Благодаря @koppor для уведомления. Новый URL-адрес: http://manuals.zeroturnaround.com/jrebel/misc/integrations.html –

-1

Вы заметили комментарий в IJ рядом с «Сделать проект автоматически»?

работает только в то время как не работает/отладки

перераспределять вобще Ctrl + F9 (сделать) или Ctrl + Сдвиг + F9 (сделайте текущий файл) ,

+0

Это не имеет никакого отношения к горячему развертыванию. – specializt

+1

ИМХО это делает, IJ не может развернуть что-либо, если оно не сделало это первым. Как отметил OP, он ожидает, что make произойдет автоматически, чего не происходит во время работы. –

+0

вы явно не понимаете концепцию горячего развертывания. – specializt

2

В IJ вы можете установить компилятор eclipse вместо компилятора javac по умолчанию, но все же вам нужно будет сделать вручную.

+1

Если приложение развернуто из «артефакта», тогда «Выполнение автоматически» работает для запущенного приложения, даже если в настройках указано противоположное. Неудобство, однако, состоит в том, что у него есть задержка, так что это не так быстро, как можно было бы ожидать. Компиляция вручную так же просто, как нажатие Ctrl + S в Eclipse - просто ярлык, который можно переустановить. –

Смежные вопросы