Spring Boot jest projektem Springa, który pozwala na szybką budowę aplikacji w oparciu o przygotowaną kolekcję szablonów startowych (starter templates).
Zatem jeśli np. chcemy stworzyć aplikację webową działającą na bazie Spring MVC wystarczy, że użyjemy odpowiedniej zależności (Maven dependency)
reprezentującej szablon startowy do budowy aplikacji web, a wszystkie wymagane zależności zostaną automatycznie dociągnięte i podpięte pod nasz projekt:
W przypadku gdybyśmy chcieli sami (bez Spring Boota) skonfigurować taką aplikację, musielibyśmy zadbać o własnoręczne wybranie i podpięcie
wszystkich wymaganych zależności zachowując do tego odpowiednie powiązania między wersjami, co jest bardziej czasochłonne i ogólnie bardziej skomplikowane (trzeba wtedy skompletować pasujące do siebie wersje bibliotek).
Należy pamiętać, że aby Spring Boot mógł w ogóle zostać zainicjalizowany to w pierwszej kolejności (jeszcze przed wpisaniem wyżej wymienionej zależności)
wymagane jest podanie wersji w jakiej mają działać komponenty Spring Boota (innymi słowy, jaką wersję Spring Boot-a chcemy używać).
Wprowadzamy więc do pliku
pom.xml następującą konfigurację:
Wersja 2.0.4 jest podana jako przykład. Analogicznie będzie to wyglądało dla Spring Boot w wersji 3.
Ostatecznie nasz plik
pom.xml
będzie się prezentował podobnie jak poniżej:
Wtyczki czyli Plugins
W sekcji plugins pliku
pom.xml w projekcie Maven definiowane są wtyczki, które są niezbędne do budowania i
zarządzania aplikacją. W kontekście Spring Boot, jedną z kluczowych wtyczek jest
spring-boot-maven-plugin, która
upraszcza proces budowy aplikacji, umożliwiając automatyczne repackaging i tworzenie wykonywalnych artefaktów.
Wtyczka ta jest integralną częścią pracy z Spring Boot, zapewniając zgodność z konwencjami frameworka i ułatwiając
deployment aplikacji.
Opcje konfiguracyjne wtyczki
classifier,
mainClass oraz
excludes na podstawie przykładu wykluczenia biblioteki LOG4J podczas budowania projektu:
Wykluczenie zależności LOG4J może być przydatne, jeśli chcesz używać własnej implementacji biblioteki do logowania.
Atrybut
classifier to dodatkowy identyfikator, który może być używany do rozróżniania różnych wersji lub typów tego samego artefaktu. "Exec" oznacza, że w ramach builda będzie generowany wykonywalny plik JAR.
Rekomendacja
Podsumowując, Maven odgrywa kluczową rolę w upraszczaniu i usprawnianiu procesu zarządzania
zależnościami w projektach Spring Boot. W naszej praktyce deweloperskiej, zdecydowana większość
projektów powstała z użyciem Mavena jako narzędzia do zarządzania zależnościami, co poniekąd świadczy o jego
niezawodności i wydajności.
Chociaż Maven pozostaje dominujący, warto zauważyć rosnącą popularność
Gradle, szczególnie w nowych projektach, ze względu na jego elastyczność i mocne wsparcie dla
automatyzacji. Rekomendujemy dokładne rozważenie obu narzędzi w kontekście specyficznych wymagań i
preferencji Twojego projektu, pamiętając, że wybór odpowiedniego narzędzia do zarządzania
zależnościami może znacząco wpłynąć na efektywność i sukces Twojej pracy deweloperskiej.
Praktyka
Wszystkie nasze kursy poświęcone Springowi wykorzystują Spring Boot.
Każdy z nich zawiera plik
pom.xml, który
jest przygotowany tak, aby zawierał tylko niezbędne zależności. Przykładowo:
Autor: Jarek Klimas
Data: 03 stycznia 2024
Labele: Backend, Podstawowy, Java
Czy informacje, które otrzymałeś, były pomocne?
Jeśli tak, zapraszam Cię do podarowania mi kawy.
Topowe Materiały
Spring IO: Spring Boot Maven Plugin Documentation
Baeldung: Spring with Maven
Baeldung: Spring Maven Repositories
Baeldung: Multi-Module Project With Spring Boot
Baeldung: Apache Maven Tutorial
Udemy: [NEW] Spring Boot 3, Spring 6 & Hibernate for Beginners — polskie napisy