Stworzyliśmy moduły projektu mavenowego, a ściślej mówiąc osobne projekty, które docelowo będą ze sobą współpracować. Są to jednak kompletnie „gołe” projekty, bez żadnych bibliotek jak chociażby JPA niezbędnego dla warstwy DAO. Przyszła kolej na dołączanie takich bibliotek zewnętrznych oraz łączeniu naszych modułów ze sobą i grupowaniu ich w projekty.

Dla ułatwienia sobie pracy zaczniemy od zgrupowania naszych projektów w jeden projekt mavenowy. W tym celu, na poziomie folderów z modułami tworzymy pusty plik pom.xml, któy będzie naszym ‚rodzicem’ dla modułów i wpisujemy do niego podstawową składnię:

Nową rzeczą jest tutaj jedynie:

Ponieważ nasz rodzic ma za zadanie jedynie zgrupować pozostałe moduły, nie potrzebujemy aby był pakowany do pliku .jar czy jakiegokolwiek innego. Jeśli spróbujemy wykonać na nim polecenie install, przekonamy się, że nie zostanie nawet utworzony folder target, a jedynym wynikiem tej operacji będzie instalacja naszego poma w lokalnym repozytorium mavena.

Chcemy aby budując projekt parent przebudowane zostały wszystkie moduły projektu. W tym celu posłużymy się tagiem <modules>, który definiuje listę projektów mavenowych, które mają być modułami projektu rodzica.

W tagach <module> podajemy ścieżki do poszczególnych modułów relatywnie względem pliku pom.xml rodzica. Gdybyśmy utworzyli folder kino-parent i w nim zamieścili główny pom projektu, referencje do modułów wyglądałyby następująco:

Spróbujmy teraz wykonać polecenie clean install na głównym pomie projektu:

Widzimy, że maven odnalazł zdefiniowane moduły i przebudował każdy z nich w kolejności podanej na liście <modules>. Kolejność ta jest istotna ze względu na zależności pomiędzy modułami, ponieważ chcemy żeby projekt zależny od innych został najpierw przebudowany i dopiero załączony do pozostałych w swojej nowej wersji.


Kurs Maven’a [cz.01] – wstęp
Kurs Maven’a [cz.02] – od czego zacząć
Kurs Maven’a [cz.03] – do czego ten maven
Kurs Maven’a [cz.04] – zależności
Kurs Maven’a [cz.05] – instalacja
Kurs Maven’a [cz.06] – tworzenie modułu, archetyp
Kurs Maven’a [cz.07] – tworzenie modułu, kopiowanie
Kurs Maven’a [cz.08] – tworzenie modułu ręcznie
> Kurs Maven’a [cz.09] – parent pom
Kurs Maven’a [cz.10] – import do Eclipsa
Kurs Maven’a [cz.11] – zależności zewnętrzne
Kurs Maven’a [cz.12] – zależności wewnętrzne
Kurs Maven’a [cz.13] – scope, exclusion
Kurs Maven’a [cz.14] – parametry (properties)
Kurs Maven’a [cz.15] – profile
Kurs Maven’a [cz.16] – cykl życia
Kurs Maven’a [cz.17] – pluginy
Kurs Maven’a [cz.18] – repozytoria zdalne
Kurs Maven’a [cz.19] – podsumowanie