# Verständnisfrage Maven



## Mr.Jingles (20. Jun 2015)

Hallo zusammen,

ich möchte gerne in Zukunft aktiv hier teilnehmen, habe mich daher angemeldet und direkt eine Frage. Wäre cool, wenn mir jemand helfen könnte.

Ich habe schon ein paar Erfahrungen, was Java, JavaScript und andere Dinge angeht. Im Zuge dessen wurde ich jetzt das erste Mal mit Apache Maven konfrontiert. Da ist mir aber einiges noch nicht ganz klar.

Also Maven ist ja zunächst mal ein Build- Management- Tool, so weit so gut. Es gibt die POM.XML, in der die Software- Abhängigkeiten des Projektes stehen. Auch der Aufbau eines Maven- Projektes ist mir mittlerweile bekannt. 
Beim ersten Ausführen wird geprüft, ob die Syntax okay ist. Ist sie das, wird geprüft, ob die Abhängigkeiten im lokalen Repository vorhanden sind. Falls ja, werden sie "genommen". Falls nein, werden die Abhängigkeiten heruntergeladen (Intraweb/Internet). 

Ich verstehe aber noch nicht ganz, warum Maven jetzt nun verwendet wird. Meine Ideen:
1) Durch das Herunterladen der Software aus einer zentralen Datenquelle steht jedem Mitglied eines Projektes dasselbe Projekt/derselbe Stand zur Verfügung
2) Was bedeutet es genau, wenn da steht :"Automatisierung von Arbeitsschritten - Kompilieren, Testen, Optimieren....." 

Kann mir bitte jemand helfen zu verstehen, was Maven überhaupt verwendet wird und was der Riesen- Vorteil ist.

Danke.


----------



## Saheeda (20. Jun 2015)

Du musst dich um den sch... wie Runterladen und Einbinden der benötigten Bibliotheken (in der jeweils korrekten Version) nicht selbst kümmern. Das sind vielleicht pro Datei immer nur ein paar Minuten, wird aber irgendwann trotzdem extrem nervig. Zudem lassen sich die Dependencies in der POM schön sauber gruppieren und sortieren. Man sieht auf einen Blick, was zur Datenbank gehört, was Client-Server-Gedöhns ist, was für Tests ist, etc.

Du kannst einfach Maven sagen "mach mal" und es lässt die Tests laufen, prüft, ob sämtliche Abhängigkeiten valide sind, compiliert, etc. Wenn ich ein Programm baue, möchte ich mich um so wenig wie möglich selbst kümmern müssen, um mich voll und ganz aufs Programmieren konzentrieren zu können.
Wenn ich irgendetwas automatisieren kann, dann tu ich es auch.

Zudem sind automatisierte Prozesse meistens weniger fehleranfällig, als wenn man es jedes mal per Hand macht.


----------



## Mr.Jingles (21. Jun 2015)

Zunächst mal Danke für deine Antwort!

Also wenn ich jetzt an das Prinzip "Continous Integration" denke, setzt Maven die Module (z.B. nach dem OSGi- Konzept) so zusammen, wie es in der pom.xml steht. 

Das Modul A und das Modul B gehören zusammen. Diese Verbindung steht in der pom.xml. Modul A und Modul B werden also zusammengesetzt. 

Müssen die Module lokal vorhanden sein oder können sie auch in der xml- Datei stehen? 

Danke


----------

