Maven

Nadszedł czas na lekcję bardziej teoretyczną – w tej lekcji powiemy sobie o narzędziu Maven.

Powiemy sobie czym jest, do czego służy i czy warto go faktycznie używać.

Czym jest… Maven?

Głównym przeznaczeniem Mavena jest automatyczne budowanie aplikacji w Javie. Cały proces budowania jest nazwany Maven Build Lifecycle – czyli cyklem życiem.

  • Validate – Sprawdzanie czy struktura całego projektu i głównego pliku POM jest poprawna
  • Compile – kod naszej aplikacji jest kompilowany, czyli tłumaczony na język maszynowy
  • Test – uruchamiane są testy jednostkowe
  • Package – ze wszystkich zdefiniowanych modułów jest tworzona paczka dystrybucyjna
  • Integration-test – skoro paczka została zbudowana z X modułów to czas na przetestowanie integracji między nimi
  • Verify – sprawdzenie poprawności utworzonej paczki
  • Install – Paczka jest umieszczona w repozytorium lokalnym – czyli w repozytorium Mavena na naszym komputerze
  • Deploy – paczka jest publikowana na zewnętrznmy serwerze

Ważne słowa

W Mavenie jest używane słownictwo, które powinieneś znać:

  • POM – jest to główny plik Maven o nazwie pom.xml, w którym są opisane najważniejsze informację o module/projekcie. Każdy projekt może zawierać N plików pom – np. jeden odpowiedzialny za jeden moduł aplikacji, jednak zawsze posiadając jeden tzw. super POM – czyli plik definiujący moduły znajdujący się w katalogu głównym projektu.
  • archetype – jest to tzw. szablo na podstawie, którego jest tworzony projekt Maven – czyli plik pom.xml
  • repozytorium – mamy repozytorium lokalne i zdalne – lokalne to takie, w którym umieszczane są nasze stworzone paczki w fazie życia install oraz paczki, które są właśnie pobierane ze zdalnego repozytorium Maven.
  • zależność – zależnościami nazywami paczki/biblioteki, z których korzystamy – deklaruje się je w pliku pom.xml przy użyciu dependency.
  • artefakt – artefaktem nazywamy samoistną jednostkę może to być właśnie np. moduł, cały projekt, albo zależność zaciągnięta ze zdalnego repo

Do czego on służy?

Na początku wspomniałem, że Maven służy do automatycznego budowania oprogramowania w Javie – i jest to prawda, jednak dzięki niemu możemy jeszcze kilka rzeczy.

Dependency

Dzięki Mavenowi w łatwy sposób możemy zaciągać dependency (biblioteki) ze zdalnego repozytorium Mavena, która nie jest wbudowana w JDK. Przykładem takiej biblioteki możemy być JUnit zapewniający testowanie jednostkowe – dzięki jednej dependency w pliku POM możemy w naszym projekcie używać biblioteki JUnit. 😉

Kilka modułów

Maven w swoim cyklu życia łączy wiele modułów projektu w jeden – oczywiście o ile projekt jest na nie podzielony – co jest jego dużą zaletą. Możemy tworzyć całkiem niezależne modułu od siebie oraz przy użyciu kilku plików pom.xml wygenerować aplikację, która korzysta z kilku niezależnych modułów.

pom.xml

Jak wspomniałem na początku, najważniejszą częścią Mavena jest plik pom.xml, w którym wszystko jest definiowanie. Od podstawowych informacji o projekcie, przez używane zależnosci, aż do dodatkowych pluginów używanych do usprawnienia pracy developera.

Struktura pliku

  • project – cała struktura pliku pom.xml mieści się w tagach <project></project>
  • groupId – id grupy, jest to też nazwa paczki aplikacji np. pl.maniaq
  • artifactId – unikalne id modułu lub całego projektu
  • packaging – sposób pakowania paczki, może być JAR – czyli klasyczna aplikacja Java, WAR – webowa aplikacja lub POM – buduje projekt z kilku modułów
  • version – wersja projektu/modułu
  • name – nazwa projektu
  • dependencies – w tagach <dependencies></dependencies> są deklarowane zależności – czyli dependency.
  • dependency – deklarujemy zależność, którą Maven zaciągnie do naszego projektu – np. bibliotekę JUnit.

Struktura katalogu

Struktura katalogu Maven trochę się różni, mamy dodatkowo takie foldery:

  • target – w tym folderze znajduje się m.in. JAR/WAR wynikowy budowania aplikacji
  • src/main – kody źródłowe aplikacji
  • src/test  – testy jednostkowe aplikacji

Podsumowanie

Maven służy do automatycznego budowania oprogramowania – przez sprawdzanie poprawności projektu, kompilowanie kodu źródłowego, uruchamianie testów jednostkowych, łączenie modułów oraz testowaniu integracyjnym, aż po zwracanie aplikacji w formie JAR lub WAR.

My mavena będziemy głównie używać do zaciągania zewnętrznych bibliotek oraz uruchamiania testów jednostkowych – na sam koniec będzie mogli zbudować wynikowego JARA, którego będziemy mogli uruchomić wszędzie na maszynie wirtualnej.

Skoro wiemy już czym jest Maven to w nastepnej lekcji przejdziemy do przeniesienia naszego projektu na projekt Maven.

 

 

Kamil Klimek

Od 2016 jestem programistą Java. Przez pierwsze 4 lata pracowałem jako Full Stack Java Developer. Później postanowiłem postawić nacisk na Javę, żeby jeszcze lepiej ją poznać.

Subscribe
Powiadom o
guest
1 Komentarz
najstarszy
najnowszy oceniany
Inline Feedbacks
View all comments
trackback

[…] przedstawię na projekcie Maven. Na początek należy do projektu dodać zależność hibernate-validator w wersji 7.x – czyli […]

1
0
Would love your thoughts, please comment.x