Pracuję nad witryną opartą na magnolii. Używam archetypu webapp do stworzenia nowej aplikacji internetowej. Za pomocą wiersza poleceń mogę wygenerować WAR i wdrożyć go w moim kontenerze (Tomcat). Uruchomiłem go i działa dobrze.Korzystanie z nakładek maven w konfiguracji webapp run przy użyciu IntelliJ?
Kolejnym krokiem było zaimportowanie mojej struktury projektu do IntelliJ. IntelliJ widzi wszystko dobrze i jest w stanie skompilować wszystko. Przetestowałem to, robiąc najpierw maven clean, a następnie pozwól IntelliJ zrobić resztę (odbudować projekt).
Ostatnim krokiem jest pozostawienie go w moim pojemniku. Wcześniej skonfigurowałem konfiguracje uruchamiania dla aplikacji internetowych (nie używają nakładek wojennych) i działały dobrze. W tym przypadku ustawiłem go tak jak wcześniej i wskazałem na mój eksplodowany artefakt webapp.
Po uruchomieniu programu tomcat nie znajduje się moja aplikacja internetowa. Uważam, że nakładka nie została scalona z katalogiem docelowym projektu (co zwykle ma miejsce w przypadku instalowania programu maven). Jednak IntellJ stworzył w moim projekcie katalog nakładek i rozpakował tam plik WAR (overlay/super) WAR.
Rozumiem, że działa, kiedy sam robię instalację, a następnie uruchamiam Tomcata w IntelliJ. Co jest oczywiste, ponieważ wszystkie potrzebne pliki znajdują się teraz w moim katalogu docelowym (jak na przykład web.xml :)).
To czego chcę to: - IntelliJ wie, że gdy uruchomi Tomcat, powinien przygotować katalog docelowy tak, jak zrobiłby to "mvn install" lub "pakiet mvn".
Co robi: - Robi coś pomiędzy. Tworzy katalog docelowy i kopiuje zasoby z projektu Webapp. Nie nakłada się na żadną zależność WAR, w związku z tym docelowy katalog docelowy jest niekompletny.
Ktoś ma jakieś wskazówki, aby rozwiązać ten problem?
Czy to pozwoli mi również "Aktualizować klasy"? Czy musiałbym ponownie wdrożyć, aby zobaczyć każdą zmianę? – Abhimanyu
Po aktualizacji klas zostaną one załadowane do pamięci i będą działać. Ale pamiętaj, że gdy używasz wielu zależności, przy następnym uruchomieniu kontenera musisz upewnić się, że kontener (np. Tomcat) również szuka Twoich najnowszych źródeł zależności. Zauważyłem, że jest to dość kłopotliwe, musiałem zainstalować te zależności, aby upewnić się, że znajdują się one w moim lokalnym repozytorium. W ten sposób cel pakietu mvn prawidłowo je zbierze. –
@StefanHendriks: Dzięki za cynk. Miałem podobny problem, w którym moja definicja nakładki była ignorowana przez IntelliJ. Wygląda na to, że IntelliJ ignoruje niektóre z konfiguracji wtyczki maven-war, gdy buduje webapp używając własnego wewnętrznego mechanizmu kompilacji. Powiedzenie tego, aby delegować kompilację wojny do samego siebie, oznacza, że cała konfiguracja wtyczki wojennej jest honorowana. – skaffman