Eclipse: mehrere Projekte sollen sich ein Lib-Verzeichnis teilen

DarthShader

Erfahrenes Mitglied
Hallo,

ich habe eine Frage zu Eclipse und der allgemeinen Vorgehensweise, wenn mehrere Projekte dieselben Bibliotheken verwenden.

Momentan habe ich in einem Workspace 8 einzelne Eclipse Projekte. Jedes Projekt besitzt ein "lib" Verzeichnis, in dem die benötigten Bibliotheken (jars) liegen. Mit der Zeit befinden sich also sehr viele Duplikate dort, was ich gerne ändern möchte.

Was ich gerne hätte, wäre ein allgemeins lib - Verzeichnis, z.B. auf derselben Verzeichnisebene wie die (Eclipse-)Projektverzeichnisse. Allerdings habe ich Probleme, dann die Libs in Eclipse selbst dem Build-Path zuzuordnen.

Wirft man einen Blick in eine ".classpath" Datei, so gibt es z.B. diesen Eintrag:

<classpathentry kind="lib" path="d:\projekte\eclipse\projekt1\lib\jxlayer.jar" sourcepath="d:\projekte\eclipse\projekt1\lib\jxlayer-src.zip"/>

Absolute Pfade gehen leider überhaupt nicht, denn mehrere Entwickler arbeiten an den Projekten, und die Repositories liegen bei denen in versch. Pfaden. Nun dachte ich, es wäre kein Problem, ein relatives Verzeichnis anzugeben, so z.B.:

<classpathentry kind="lib" path="..\lib\jxlayer.jar" sourcepath="..\lib\jxlayer-src.zip"/>

aber damit kommt Eclipse leider nicht klar, er findet die Bibliothek(en) dann nicht.


Nun also die Frage, wie macht man es im Allgemeinen, dass sich mehrere Eclipse Projekte ein gemeinsames Lib-Verzeichnis teilen, damit ich die jars nicht überall doppelt habe?


Über Eure Hilfe würde ich mich sehr freuen


Vielen Dank!
 
Zunächst mal würde ich die Finger von der .classpath lassen. Da sollte nur Eclipse drin rumschreiben. Wenn man ohne große Ahnung darin rumfriemelt geht ganz schnell das Projekt bums :-)

Zunächst solltest du dir ein Projekt anlegen wo du nur deine Libs reinwirfst. Die libs müssen im classpath dieses Projekts liegen.

Nun gehst du auf dein Projekt das diese libs importieren soll. Klickst auf den Projektnamen im Project Explorer. Rechtsklick -> BuildPath-> Configure Build Path. In der Maske auf den Reiter Projects wechseln, den Button Add.. drücken und das lib-Projekt auswählen.
Wenn du dann mit ok bestätigst wird hast du ne Verknüpfung deines Projekts mit dem lib-Projekt. Hierdurch werden insbesondere auch die classpath Einträge des lib-Projekts übernommen.
 
Maven benutzen? ;)

Alternativ kann man hergehen und ein dediziertes Dependencyprojekt im Eclipse anlegen, dass nur die Jars enthält und dieses dann mit ins VCS deiner Wahl einchecken. Auf die Jars in dem Projekt kannst du dann "relativ" verweisen. Protokoll ist dann nicht file: sondern resource. Nett ist hierbei, dass du ähnlich wie bei Userlibraries im Dependenciesprojekt sourcen und Javadoc deklarieren kannst und die Projekte die die Dependencies benutzen wiederumdas auch mitbekommen.

Aber ernsthaft. Für ein richtiges Projekt muss ein dediziertes Dependencymanagement / Buildtool her. Wie sonst willst du z.B. einen Build von der Kommandozeile aus fahren.

REINHAUN!

PS: da war jemand schneller ;).
 
Aber ernsthaft. Für ein richtiges Projekt muss ein dediziertes Dependencymanagement / Buildtool her. Wie sonst willst du z.B. einen Build von der Kommandozeile aus fahren.

Momentan habe ich für jedes Projekt ein Ant Skript, und ein Gesamt-Ant-Skript, welches alle Projekte in der richtigen Reihenfolge baut - das klappt ganz gut, ist aber langsam nicht mehr so einfach pflegbar :)

Ich habe begonnen, die Maven Dokumentation zu lesen, ich denke das ist schon das richtige für mich.

Kann man eigentlich diese beiden Lösungsansätze aus Euren Antworten, also ein Lib-Projekt für Third-Party-Libs in Eclipse zu haben UND Maven einzusetzen, kombinieren, oder funktioniert das mit Maven ganz anders (ich habe etwas von einem lokalen Repository gelesen, kann damit aber noch nicht richtig etwas anfangen)?
 
Maven lädt Dependencies automatisch aus einem Repository und legt sie lokal ab. Mit dem m2eclipse Plugin kann man die Dependencies, die man in der pom.xml definiert auch in Eclipse nutzen. D.h. man konfiguriert sein Projekt nur noch über die pom.xml, arbeitet aber ganz normal in Eclipse weiter.

Gruß
Ollie
 
Du kannst auch eine User-Lib anlegen in welcher dann alle jars drin sind die du benötigst:

Projekt - Properties - Java Build Path - Libraries - Add Library - User Libraries eine neue erstellen. Die kannst du dann auch als Container verwenden.

Aber Maven macht das tatsächlich alles einfacher :)
 
Zurück