Używam Intellij Ultimate z Tomcat i wdrażam wojnę. Wszystko jest poprawnie wdrażane w katalogu aplikacji webowych tomcat.
Kiedy zmieniam plik, taki jak plik xhtml, czy istnieje sposób, aby tomcat automatycznie odebrał tę zmianę? W tej chwili muszę skopiować plik z Intellij i skopiować go do katalogu, w którym znajduje się on w katalogu aplikacji internetowej tomcat. Wiem, że istnieją pewne pliki, które będą wymagać ponownej kompilacji, ale xhtml nie jest jednym z nich.
Nie można tego zrobić, jeśli wdrożysz wojnę z IntelliJ IDEA. Może się to jednak zdarzyć, jeśli wdrożysz wybuch wojny . W IDEA:
my-webapp-name:war
my-webapp-name:war exploded
Teraz za każdym razem, gdy wprowadzisz zmianę, IDEA ponownie wdroży zmieniony plik (i), gdy ramka IDEA jest dezaktywowana (tj. Traci fokus). Zajmie to sekundę lub dwie, zobaczysz to na dolnym pasku stanu w IDEA. Oczywiście. nadal będziesz musiał odświeżyć przeglądarkę internetową, aby pobierała nowy plik (chyba że strona ma automatyczne odświeżanie Ajax, takie jak fetch).
Dobrym połączeniem z Tomcat jest ustawienie „Dezaktywacja przy ramce” na „Aktualizuj zasoby”, a czynność „Włącz aktualizację” na „Przełóż” lub „Uruchom ponownie serwer”. Umożliwia to szybką aktualizację stron statycznych poprzez dezaktywację ramki oraz klasa zaktualizowana za pomocą akcji „update”.
Firma o nazwie ZeroTurnaround sprzedaje JRebel, który jest dynamicznym rozwiązaniem do ładowania klas . Mają też pięcioczęściową serię na ten temat, która jest bardzo dobra.
źródło
Error: Artifact 'my-webapp-name:war exploded' has invalid extension
jak to naprawić?Jeśli chcesz zaktualizować klasy i zasoby, uruchom Tomcat w trybie debugowania . W tym trybie IntelliJ aktualizuje klasy i zasoby bez problemu (hot swap).
Mam ten sam problem. IntelliJ nie zaktualizował mojego projektu, ponieważ działam w trybie „Run”. Kiedy uruchamiam w trybie debugowania i naciskam Ctrl+ F10, aktualizuje klasy i zasoby.
źródło
Znalazłem lepszy sposób.
W Eclipse automatycznie budujemy, kompilujemy + przeładowujemy pliki statyczne. W rzeczywistości pliki statyczne są obsługiwane bezpośrednio z src / main / webapp .
W IntelliJ zamiast obsługiwać bezpośrednio z src / main / webapp , w miejscu docelowym utworzony jest folder, w którym będziesz mieć kopię swojego src / main / webapp, a także inne związane z kontekstem .. web-inf / classes / lib.
Jeśli zamiast celu umieścisz wyjście rozstrzelonego artefaktu do src / main / webapp , nie nadpisze on plików źródłowych i będzie służyć bezpośrednio, nie będziesz musiał uderzać - aktualizuj zasoby / aktualizuj zasoby i klasy
Więc to, co musisz zrobić w IntelliJ, to
Po tym, jeśli masz zadania, które zmieniają pliki statyczne spoza IntelliJ, zobaczysz zmiany natychmiast bez przechodzenia do IntelliJ i Update Resources , a dla klas masz to makro, które zapisuje i kompiluje (Uwaga: możesz także po prostu nacisnąć Kompiluj / Recompile: cmd + shift + F9 / cmd + F9 - jeśli masz wielu otwartych edytorów, zobaczysz, że Twoje brudne * edytory nie będą brudne, a zmiany (klasy) zostaną ponownie załadowane)
źródło
Jest to możliwe tylko po wdrożeniu eksplodowanego folderu wojny, włączeniu ponownego ładowania na gorąco i uruchomieniu programu Tomcat w trybie debugowania.
Oto kroki prowadzące do tego.
źródło
jeśli masz pliki wieloczęściowe, które chcesz od razu przeglądać / odtwarzać, prześlij je bezpośrednio do folderu docelowego. * (zmień tylko lokalizację zapisu na folder docelowy / statyczny /)
będziesz mógł natychmiast wyświetlić plik bez konieczności ponownego uruchamiania IDE
źródło