IntelliJ Community nie dostarcza wsparcia dla aplikacji napisanych z wykorzystaniem Spring Framework. Z tego powodu często od swoich widzów i kursantów otrzymuje pytanie – czy można to obejść? Lub jak sobie z tym poradzić? Dlatego w tym artykule opiszę jak uruchomić Spring w IntelliJ Community lub innym dowolnym IDE z wykorzystaniem Cargo.
Rozwiązanie jest na tyle uniwersalne, że sprawdzi się w każdym środowisku programistycznym, ponieważ zależność tą konfigurujemy na poziomie Apache Maven.
Czym jest Cargo?
Cargo to lekki wrapper, który umożliwia uruchomienie aplikacji w ramach różnego rodzaju kontenerów:
– Geronimo – Glassfish – JBoss – Jetty – Jo! – JRun – JOnAS | – Payara – Grion/OC4J – Resin – Tomcat – TomEE – WebLogic – WebSphere – WildFly |
Jego użycie jest bardzo proste, a możliwości konfiguracyjne szerokie. Dlatego sprawdzi się w wielu IDE np. Visual Studio Code lub IntelliJ Community.
Integracja ze Spring Framework
Po pierwsze w pliku pom.xml w sekcji build należy zdefiniować nowy plugin, który będzie miał odwoływał się do następującego artefaktu:
<build> <plugins> <plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>1.7.10</version> <configuration> <container> <containerId>tomcat9x</containerId> <type>embedded</type> </container> </configuration> </plugin> </plugins> </build>
Jest to zależność do samego Cargo. W ramach niego dodajemy konfiguracje do konternera. Może być to dowolny konterner – w tym przypadku jest to standardowa aplikacja napisana w Spring, więc natulranym wyborem jest klasyczny Tomcat. Natomiast jeśli Twoja aplikacja ma określone wymagania np. wymaga serwera nieblokującego na potrzeby programowania reaktywnego to naturalnym wyborem będzie Jetty.
Dodatkowo w ramach kontenera zdefiniowany został typ embedded. Ponieważ wynika to ze specyfiki Tomcat 7+, która uniemożliwia na osadzenie kontenera webowego i aplikacji w ramach tej samej JVM.
Uruchomienie aplikacji
Aby uruchomić aplikacje wystarczy wykonać polecenie:
mvn org.codehaus.cargo:cargo-maven2-plugin:run
Samą operację, można wykonać również dwuklikiem w ramach sekcji Plugins. Ponieważ jest to możliwe, dzięki dodaniu konfiguracji w pliku pom.xml.
Z pewnością widzimy logi, które pokazują, że Tomcat ma się dobrze:
INFO: Completed initialization in 1635 ms [INFO] [beddedLocalContainer] Tomcat 9.x Embedded started on port [8080] [INFO] Press Ctrl-C to stop the container...
Wideo prezentacja
Również godny uwagi w temacie jest materiał wideo w którym dokładnie prezentuje jak przejść przez wszystkie etapy z bardziej szczegółowym wyśnieniem: