IntelliJ и Tomcat ... измененные файлы не распознаются автоматически Tomcat
Я запускаю Intellij Ultimate с Tomcat и развертываю войну. Все развертывает штрафа в каталог веб-приложения из каталога.
когда я изменяю файл, как файл xhtml, есть ли способ для tomcat автоматически подобрать это изменение? На данный момент мне нужно скопировать файл из intellij и скопировать его в каталог, где он живет в каталоге tomcat webapp. Я знаю, что есть определенные файлы, которые нужно будет перекомпилировать, но xhtml не являются одним из них.
4 ответа:
Это невозможно сделать, если вы развернете войну с IntelliJ IDEA. Однако это можете быть если вы развертываете взорвался войны. В идее:
- откройте конфигурацию Tomcat Run/Debug ( "Выполнить" > Редактирование Конфигурации)
- перейдите на вкладку "развертывание"
- в разделе" развертывание при запуске сервера " удалите (если есть) артефакт
my-webapp-name:war
- нажмите на иконку "Добавить", выберите "артефакт", а затем выберите
my-webapp-name:war exploded
- Нажмите кнопку ОК (в диалоговом окне "Выбор артефактов для развертывания")
- по-прежнему в окне запуска/отладки конфигурации выберите вкладку "сервер"
- в середине этой вкладки измените параметр" on frame Deactivation " на "Update resources" или " Update Classes and Resources"
- обновление ресурсов: все измененные ресурсы (то есть все компоненты приложения, отличные от классов) будут усовершенствованный.
- обновить классы: и ресурсов. Все измененные ресурсы будут обновлены; измененные классы будут перекомпилированы. Обратите внимание, что будут ли обновлены фактические классы, зависит от возможностей веб-сервера. Если я помню, Tomcat будет перезагружать файлы html / xhtml и jsp, но не сервлеты или классы, которые используют JSP или сервлеты. Вам нужно изменить Tomcat, чтобы использовать для этого динамический загрузчик классов.
- вы также можете установить "On ' update' и действия тоже.
- это определило, что произойдет, когда вы нажмете обновление (или Ctrl+F10) в окне запуска.
- "показать диалог" определяет, если идея запрашивает вас каждый раз, когда вы нажмете значок обновления
- Нажмите кнопку ОК.
теперь каждый раз, когда вы вносите изменения, IDEA повторно развертывает измененные файлы, когда фрейм IDEA деактивирован(т. е. теряет фокус). Это займет секунду или две, Вы увидите его в нижней строке состояния в IDEA. Очевидно. вам все равно нужно обновить веб-браузер, чтобы он извлек новый файл (если, конечно, на странице нет автоматического обновления ajax, такого как fetch).
хорошее сочетание с Tomcat установить "на отключение рамка" для "Обновление ресурсов" и "о" обновление " действий или "развернуть" или "перезагрузить сервер". Это позволяет быстро обновлять статические страницы с помощью деактивации фрейма, А класс-с помощью "обновления" действие.
компания под названием ZeroTurnaround продает JRebel что является динамическим решением загрузчика классов. У них также есть пять серий частей на эту тему это очень хорошо.
опишу последовательность действий с помощью скриншотов:
- откройте конфигурацию Tomcat Run/Debug (Run > Edit Configuration)
Если вы хотите обновить классы и ресурсы, выполните команду котяра на отладки режим. В этом режиме IntelliJ обновление классов и ресурсов без проблем (горячая замена).
получил ту же проблему. IntelliJ не обновлял мой проект, потому что я запускаю как "режим запуска". Когда я бегу в отладки режим и нажать
<kbd>Ctrl</kbd>+<kbd>F10</kbd>
, он обновляет классы и ресурсы.
Я нашел лучший способ.
на затмение мы автоматически строим, компилируем + перезагружаем статические файлы. На самом деле статические файлы подаются непосредственно из src / main / webapp.
на IntelliJ вместо того чтобы служить непосредственно из src / main / webapp, есть папка, созданная в target, в которой у вас будет копия вашего src / main / webapp а также другой контекст, связанный .. web-inf / классы /библиотека.
Если вы ставите вместо цели выход взорванного артефакта в src / main / webapp, он не будет перезаписывать исходные файлы, и он будет служить непосредственно, вы не придется бить -обновить ресурсы / обновить ресурсы и классы
Так что вам нужно сделать в IntelliJ это
- изменить выходной каталог разнесенного артефакта в src / main / webapp
- сделать макрос для сохранения и перекомпиляции / компиляции грязных классов (cmd + shift+f9)
- редактирование реестра и настроек для автоматической сборки и сборки во время работы приложения(cmd+shift+A - registry).
после этого, если у вас есть задания, которые изменяют статические файлы извне IntelliJ,вы сразу увидите изменения, не заходя в IntelliJ и обновление Ресурсы, и для классов у вас есть этот макрос, который сохраняет и компилирует (Примечание: Вы также можете просто нажать Compile/Recompile : cmd + shift + F9 / cmd + F9 - если у вас есть несколько открытых редакторов, вы увидите, что ваши грязные * редакторы будут не грязными, а изменения(классы) будут перезагружены)