# Maven und jars



## Sirakov (1. April 2008)

Hallo zusammen,

ich mache erste Schritte mit Maven. Damit ich mein Projekt (webapp) kompilieren kann, brauche ich einige jars. Diese liegen im WEB-INF/lib-Verzeichnis des Projekts.  Für das Kompilieren mit Maven muss ich diese in der pom.xml-Datei als Abhängigkeiten definieren. Wie mache ich aber das?

Danke im voraus!


----------



## y0dA (1. April 2008)

Hi!

Folgendes ist für dich interessant wenn du mit Eclipse arbeitest:
1. Wenn du Maven installiert hast (sprich Maven entpackt und in ein Verzeichnis gestellt)und danach eine Systemvariable für das Maven/Bin Verzeichnis gesetzt hast dann solltest du in Eclipse eine neue Variable anlegen:
-->Configure Variables --> New -->
Name: M2_REPO
PATH: <Pfad zum .m2/repository (bei mir bspw: C:\Dokumente und Einstellungen\ADMIN\.m2\repository)
--> Wichtig! Pfad über Folder angeben.

Danach gibt es in deinem Projekt keine JAR Files mehr, sprich lösche sie dort raus.
Das einzige was du nun tun musst ist im POM File die gewünschten JARs unter Dependencies einzutragen.
Danach gehst du in der Konsole in das Projektverzeichnis und machst:
mvn clean compile
mvn eclipse:eclipse
danach refreshed du das Projekt in Eclipse und nun hast du alle JARs für das Projekt über die zuvor definierte m2_repo Variable im Projekt.

Das sind halt ziemliche Basics, vllt einmal das gratis Maven Buch downloaden und lesen 

mfg


**EDIT**
Klarerweise sollte dein Projekt auch mit einem Maven Archetype oder mittels Eclipse-Plugin erstellt worden sein - Maven hat eine eigene Folder Struktur.


----------



## Sirakov (1. April 2008)

Hi,

Maven habe ich installiert, Beispielprojekt hat auch geklappt (HelloWorld). Ich hab auch gelesen, dass man die jars ins lokale Repository ($HOME/.m2/repository) kopieren muss. Da habe ich aber einige Fragen:

1. Soll ich diese im Unterordner unter .m2/repository kopieren oder einfach rein
2. Wie genau definiere ich ein gesamtes Verzeichnis mit jars als Abhängigkeit? Soweit ich weiss, muss ich jede einzelne Datei definieren, bei der 118 Stück will ich mir das ersparen.


----------



## y0dA (1. April 2008)

> 1. Soll ich diese im Unterordner unter .m2/repository kopieren oder einfach rein


Sind es eigene JARs, also separate Projekte von dir oder redest du hier bspw von junit.jar etc? Wenn letzteres dann brauchst du in deinem Repository nichts hineinkopieren, da durch "mvn clean compile" Maven nicht vorhandene JARs aus dem Internet ladet (deshalb gibt man im POM File repositories an) und sie dann in dein Repository ablegt.

Handelt es sich um Projekte von dir oder um JARs die in keinem Repository zu finden sind, dann musst du die Jars runterladen und dann mittels "mvn install" installieren



> 2. Wie genau definiere ich ein gesamtes Verzeichnis mit jars als Abhängigkeit? Soweit ich weiss, muss ich jede einzelne Datei definieren, bei der 118 Stück will ich mir das ersparen.


Im POM File definierst du jedes JAR für sich.


----------



## Sirakov (1. April 2008)

Die jars finde ich leider nicht online, deswegen brauche ich diese in das lokale Repo. Danke vielmals für die Hilfe, jetzt werde ich versuchen, die pom.xml anzupassen


----------



## zeja (1. April 2008)

Von vielen größeren Projekten sind die Jars schon in einem öffentlichen Maven Repository zu finden. Unter eclipse kann man mit dem Maven Plugin "Add Dependencies" auswählen und dort eingeben was man sucht. Sachen die nicht zu finden sind muss man selber hinzufügen. Dabei bitte beachten wie man Namen vergibt für Maven Repositories: http://maven.apache.org/guides/mini/guide-naming-conventions.html

Trag einfach eine neue Depency in deinem Projekt ein für ein neues Jar was du zum Repositorie hinzufügen möchtest. Dann versuche mit
mvn package
dein Projekt zu Kompilieren. Er gibt dann Fehlermeldungen für alle nicht gefundene Dependencies aus und spuckt die ein Kommando aus wie du die fehlende installieren kannst. Also einfach das Kommando kopieren und dann den Pfad zum Jar entsprechend anpassen und ausführen. Danach ist das JAr in deinem lokalen Repositorie verfügbar und kann über Maven verwendet werden.

Sofern ein Jar Abhängigkeiten zu anderen Jars hat, sollte das eigentlich auch ordentlich mit geflegt werden, damit Maven korrekt arbeiten kann.


----------

