3.  Abhängigkeitsmanagement

Maven verfügt über ein umfangreiches Abhängigkeitsmanagement. Dabei werden Projektabhängigkeiten(dependencies) im POM des Projekts angegeben und bei Bedarf direkt von Maven aufgelöst. Alle Abhängigkeiten sind in Repositories organisiert und müssen somit nicht physisch im Projekt existieren, sondern können zur Erstellungszeit aus dem jeweiligen Repository geladen werden. Ein großer Vorteil von Maven ist, dass es auch transitive Abhängigkeiten auflösen kann. Dabei ist daran zu erinnern, dass alle Bibliotheken, Plugins und Projekte als Artefakte in diesen Maven-Reposiories gespeichert werden können. Alle Objekte im Repository verfügen über ein POM und sind somit eindeutig identifizierbar.

3.1 Hierarchie und Vererbung
3.2 Maven-Repositories
3.3 Einbindung von Abhängigkeiten

3.1.  Hierarchie und Vererbung

Durch dieses Abhängigkeitsmanagement können POMs hierarchisch gegliedert werden. Dabei werden die Einstellungen vom eingebundenen POM an das Parent POM vererbt:

PIC

Allen POMs liegt das sogenannte ”Super POM” zugrunde, das in der Installation von Maven enthalten ist. Dieses POM beinhaltet alle Standard-Konventionen. Dazu gehört zum Beispiel die Verzeichnisstruktur der Projekte sowie die Beschreibung der Standard-Plugins, die von jedem POM verwendet werden. Das Super POM liegt in der Datei pom-4.0.0.xml im JAVA-Archiv ${M2_HOME}/lib/maven-2.0.9-uber.jar.

3.2.  Maven-Repositories

In einem Maven Repository können Artefakte eindeutig identifizierbar abgelegt werden. Es gibt unterschiedliche Arten von Repositories:

Die folgende Abbildung zeigt den Aufbau eines lokalen Repositories.
PIC

3.3.  Einbindung von Abhängigkeiten

Um Abhängigkeiten in einem Projekt zu deklarieren, muss die Datei POM.xml des Projekts erweitert werden.

 
1<dependencies> 
2  <dependency> 
3    <groupId>junit</groupId> 
4    <artifactId>junit</artifactId> 
5    <version>3.8.1</version> 
6    <scope>test</scope> 
7  </dependency> 
8</dependencies>

Abhängigkeiten verfügen über verschiedene Gültigkeitssbereiche(Scopes) im Projekt, die angeben während welcher Phasen diese Abhängigkeiten benötigt werden.