# Anfängerfragen zu maven2



## JRoxx (28. Mrz 2009)

Hallo,

Setze mich grade neu mit maven2 auseinander und wollte fragen ob ich folgenden Dinge richtig verstanden hab:

1. Die datei settings.xml ist für eine allgemeine Kofiguration für maven2 vorgesehen.
2. In der pom.xml werden repositories für dependecies sowie für plugins angegeben außerdem wird der build-prozess konfiguriert (sprich sources, targets etc).
3. wenn ich eclipse und maven2 einsetze und mir von einem SVN Repository meine sources in eclipse update, dann muss ich auch noch ein 'mvn -U eclipse:eclipse' aufrufen, wenn davon auszugehen ist, dass sich an den dependencies, also den jars (diese zb erweitert bzw. bearbeitet wurden) die ich für das projekt nutze, etwas verändert hat. 
4. sind artifakte jars?
5.Wenn ich in einem projekt bin, welches aus vielen Modulen besteht, welche gleiche referenced libs verwenden, so wird immer auf das lokale maven repository verwiesen und dadurch wird speicher gespart oder? habe gehört, dass durch maven2 speicher gespart wird, aber wie genau?

danke für eure Hilfe.

gruß


----------



## maki (30. Mrz 2009)

1. Nein
2. Ja und Nein. "Sources" bzw. "Targets" ist eher Ant.
3. Nimm m2eclipse bzw. IAM/Q for Eclipse wenn es endlich mal soweit ist.
4. Unter anderem, möglich sind auch Wars, etc. pp.
5. Ähhh.. Nein. Allerdings empfiehl sich in so einem Falle das sog. "Dependency Management".


----------



## SvenK (30. Mrz 2009)

1. in der settings.xml definiert man, wie der Name schon sagt, die zentralen lokalen Einstellungen von Maven. Dazu gehören solche Dinge wie Proxyeinstellungen, Repositories (die du dann nicht mehr in jeder POM eintragen musst), Mirrors, Deployment Server, Properties usw und so fort. Alles was du da speicherst, gelten für alle Maven-Projekte, aber eben nur auf diesem Rechner/Client. Im Team muss man also überlegen ob man die settings.xml teamweit einheitlich benutzt oder doch alles in die POMs schreibt (damit es zBsp auch teamfremde Entwickler nutzen können)

2. du kannst in der POM deine Source-Ordner definieren (falls diese vom Standard abweichen sollten), aber auch die Ressourcen-Ordner, den Compiler-Level (1.4.2 oder doch lieber 1.5) oder ob du gar ein ganz anderes JDK verwenden willst. Infos findest du auf der Maven-Seite unter Compiler- bzw. Resourcen-Plugin

3. nutze das m2eclipse-Plugin (ich nehme an das wirst du ohnehin tun, weil sonst hättest du ja keinen Dependency-Container) Wenn dann etwas an der POM geändert wird, wird dies automatisch registriert und die Abhängigkeiten überprüft. Habt ihr eigene Snapshots (von anderen Maven-Modulen), gibt es im Kontextmenü ein "Update Snapshots"

4. in der Regel sind Artifacte JAR-Dateien, aber in diesem Fall kann ich maki zustimmen, es sind zBsp auch WARs möglich

5. hast du mehrere Maven-Projekte (auch voneinander unabhängige), die auf die selbe Dependency verweisen (zBsp. JUnit), so wird in beiden Projekten, wie du richtig erkannt hast, auf das lokale Repository verwiesen (bzw. das JUnit-Artifact heruntergeladen) Die gewünschte junit.jar gibt es also nur ein einziges Mal und alle verwenden sie, ohne dass sie mehrmals in einen lib-Ordner kopiert werden muss. Dies ist ja auch eines der Vorteile von Dependency Management


----------

