Sądzę, że atrybuty: groupId, artifactId oraz version są już na tyle jasne, że nie trzeba ich omawiać. Zajmiemy się jedynie tymi ciekawszymi:
<scope>
Zależność ta jest wykorzystywana do definiowania tzn. przechodniości zależności. Łatwiej to będzie zrozumieć opisując jej możliwe wartości:
- compile – (domyślna, gdy scope nie został ustawiony) zależność jest dostępna w IDE, testach, trafia do paczki wynikowej i jest propagowana do zależności nadrzędnych,
- provided – działa tak samo jak compile, z tym wyjątkiem, że nie zostaje załączona do paczki wynikowej,
- runtime – zależność niepotrzebna przy kompilacji projektu, a jedynie do jego testów oraz uruchomienia,
- test – zależność nie wymagana w żadnej fazie poza testowaniem,
- system – tak samo jak provided, z tym, że zależność nie jest załączana z repozytorium, ale bezpośrednio z systemu,
- import – wskazuje zależność z innego projektu
<exclusions>
Z powodu rekurencyjnego załączania zależności może się zdarzyć, że dołączymy do naszego projektu coś, z czego nie będziemy korzystać. Z tego właśnie powodu powstała funkcja „wyrzucania” podrzędnej zależności. Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<project> ... <dependencies> <dependency> <groupId>sample.Project-A</groupId> <artifactId>ProjectA</artifactId> <version>1.0</version> <scope>compile</scope> <exclusions> <exclusion> <groupId>sample.ProjectB</groupId> <artifactId>Project-B</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </project> |
Powyższa definicja sprawi, że mimo iż ProjectA jest zależny od ProjectB, to ProjectB zostanie całkowicie pominięty przy skanowaniu drzewa zależności i budowaniu projektu. O ile oczywiście nie został dołączony w innym module.
A oto paczka powstała po zakończeniu tego etapu: KINO
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