Wiemy już po co ktoś utrudnił nam życie i podzielił projekt na części. Prędzej czy później na pewno zdarzy nam się jednak, że poza naszymi modułami zechcemy skorzystać z jakiejś gotowej biblioteki, np apache-commons. Co wtedy? Ano musielibyśmy ściągnąć jara z internetu i załączyć go jakoś do projektu lub kilku projektów. Musielibyśmy… Ale nie musimy, bo tym również zajmie się za nas maven i wspomniane wcześniej dependencies. Mało tego. Często istnieje potrzeba skorzystania z jakiejś biblioteki tylko w procesie kompilacji projektu, np servlet API jest dostępne bezpośrednio na serwerze Tomcat i nie powinno być dołączane do paczki aplikacyjnej ale potrzebujemy jej w trakcie pisania aplikacji oraz podczas kompilacji. To również zrzucimy na mavena nadając zależności odpowiedni zasięg (ang. scope).

Jak to działa w praktyce. Maven tworzy w katalogu systemowym użytkownika folder .m2  przeznaczony na repozytorium bibliotek. Przechowywane są tam zarówno jary pobierane automatycznie z internetu, jak również te powstałe z naszych modułów. To właśnie z repozytorium pobierane są wszystkie zależności potrzebne do budowania naszych projektów. A co gdy jakiejś biblioteki tam nie ma? Maven szuka jej w repozytoriach zewnętrznych, w tym internetowych, następnie je pobiera i instaluje w naszym lokalnym repozytorium.

Z tego właśnie powodu pierwsze budowanie projektu może trwać dość długo, ponieważ niezbędne będzie pobranie dużej ilości jarów ale można temu zaradzić w prostu sposób. Wystarczy zgrać sobie folder .m2 od osoby, która pracowała już przy projekcie przed nami i skopiować jego zawartość do swojego repozytorium. Zwykle nie opłaca się tego robić bo zależności nie ma aż tak dużo, ale warto wiedzieć, że istnieje taka opcja bo może się zdarzyć, że ktoś będzie w posiadaniu biblioteki, która nie jest już dostępna w żadnym repozytoriach zdalnych.


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