# Eclipse Tool für Jars - Automatisch Dependencies einbinden



## Kr0e (18. Aug 2011)

Hallo Zusammen,

Ich suche ein Tool/Plugin für Eclipse welches es mir ermöglicht, Jars zu erstellen, wo alle Abhängigkeiten hineinextrahiert werden. Der Grund ist folgender: Ich habe eine Library, welche ich gerne als eine einzige Jar ausliefern möchte aber ich habe noch gewisse Abhängigkeiten zu anderen Bibliotheken. Zur Zeit mach ich es ganz unprofessionell von Hand mit 7Zip. Ich möchte ungern direkt auf etwas wie Maven umsteigen. Ich hatte mir auch schon überlegt, einfach die Sources der jeweilgen Lib in meinen Projekt-Sourceordner zu packen. Das klappt auch wunderbar, allderdings halte ich das für unschön und noch unprofessioneller als das "von Hand kopieren". Da musst es doch iwas schönes geben, ich meine das ist ja nichts kompliziertes ansich.

Gruß,

Chris


----------



## TheDarkRose (18. Aug 2011)

Was spricht denn gegen Maven?


----------



## Kr0e (18. Aug 2011)

In erster Linie dass es mich Zeit kosten würde, mich in Maven einzuarbeiten... Ich dachte, es gäbe für eine solch triviale Aufgabe vlt ein kleines tool, was das schnell erledigt...


----------



## TheDarkRose (18. Aug 2011)

Die Zeit ist es aber wert, und für kleine Maven Projekte, ist Maven nicht schwer einzuarbeiten. Und wenn du es einmal kannst profitierst du immer davon. Vorallem bist du dann auch fürs builden auf *keine* IDE angewiesen.


----------



## Kr0e (18. Aug 2011)

Hmm, nagut. Dann werde ich mir das mal anschauen. Danke für deine Meinung 

Gruß,

Chris


----------



## Gonzo17 (18. Aug 2011)

Verstehe ich das richtig? Du willst eine Jar mit allen Abhängigkeiten direkt aus Eclipse heraus bauen? Wie wärs mit Rechtsklick auf das Projekt > Export > Java > JAR File?

Oder redest du von einem Eclipse Plugin? Da kann ich Buckminster empfehlen.

Ansonsten Maven, zumal auch Maven so langsam Unterstützung für Eclipse Plugins bietet und Buckminster damit ablösen könnte.


----------



## Kr0e (18. Aug 2011)

Natürlich kenn ich die Exportfunktion von Eclipse, ich hab mich vlt etwas ungünstig ausgedrückt. Ich würde gerne alle Abhängigkeiten, die meine Library zu anderen hat in die Jar packen, damit jemand der meine Lib benutzt, nicht meine Abhängigkeiten auch noch einbinden muss... Einfach die Jars in meine eigene Jar packen geht ja nicht... Also müsste man ja die .class Dateien der Abhängigkeiten einbinden. Und ich wollte ganz gern etwas haben, damit ich Eclipse sagen kann:

"Schau mal, hier ist meine Abhängigkeit in Jar-Form. Wenn du aus meiner Lib eine Jar erstellst, kopiere doch bitte den Inhalt der Jar von der meine Lib abhängt, in meine Jar hinein."

Ich werde mir mal Buckminster  anschauen, danke!

Gruß,

Chris


----------



## TheDarkRose (18. Aug 2011)

Buckminister ist nur für Eclipse RCP Builds.

Also, ist das ein ausführbares Programm? Dann nimm doch den Runnable JAR Export Wizard. Wenn es wirklich eine eigenständige Library ist, dann ist das Bockmist, wenn du Abhängigkeiten direkt selbst mitlieferst. Für sowas ist Maven wie geschaffen. Du brauchst halt für externe Leute ein Maven Repository, wo du deine Artifakte hostest.


----------



## Kr0e (18. Aug 2011)

Ja, es ist eine eigenständige Library. Ich finde generell ist das eigentlich nicht bockmist, denn dadurch wird Usern die Arbeit etwas erleichtert. Natürlich sollte man auch immer noch die Möglichkeit anbieten, alles selbst zusammen zu klicken. Viele Libraries bieten Distributionen an, wo alle Abhängigkeiten drin sind.


----------



## JohannisderKaeufer (18. Aug 2011)

Ein plugin das ich früher dafür verwendet habe ist fatjar.

Fat Jar Eclipse Plug-In

Wie dort zu lesen ist sollte das ab Version 3.4 schon dabei, als Export as Runnable jar File.

Da kann man dann auch angeben, daß er alle abhängigkeiten mitliefern soll.
Extract all required libraries into generated jar

Nicht zu verwechseln mit dem export als jarfile wizard.


----------



## TheDarkRose (18. Aug 2011)

Extract ist aber die falsche Option. Package ist schon eher das, was verlangt wird.


----------



## Wildcard (18. Aug 2011)

TheDarkRose hat gesagt.:


> Buckminister ist nur für Eclipse RCP Builds.


Nein, ist es nicht, Buckminster ist egal ob es sich um ein OSGi, plain Java, oder auch C Programm handelt. Je nach Typ hast du aber unterschiedliche Stufen an Komfort, denn plain Java Projekte sind nicht selbstbeschreibend wie zB OSGi oder Maven Projekte.
Aber trotzdem das falsche Werkzeug, weil Eclipse die gesuchte Funktionalität (wie hier auch schon erwähnt) bereits mitbringt.
Und dennoch kann ich nur davon abraten das zu benutzen wenn du vor hast die Bibliothek zu vertreiben.
Es gibt zwei Möglichkeiten für Runnable Jar Export:
1. Eclipse entpackt die Bibliotheken und packt sie dann neu
Ist rechtlich nicht unproblematisch und ausserdem können sich dabei Dateien gegenseitig überschreiben
2. Eclipse modifiziert deinen Code und mogelt einen angepassten Classloader unter.
Für Testzwecke ist das ganz lustig, produktiv würde ich mich aber keinesfalls darauf verlassen.

Maven scheint mir die sinnvollste Variante zu sein. Damit ist formal festgehalten welche Abhängigkeiten du hast und dadurch ist die Bibliothek einfach einzubinden.



> Viele Libraries bieten Distributionen an, wo alle Abhängigkeiten drin sind.


Ja, aber als Zip und nicht als Jar, und so ein Zip kann dir Maven ganz problemlos zusätzlich zur normalen jar bauen.


----------



## Kr0e (18. Aug 2011)

Naaagut. Dann führt wohl kein Weg an Maven vorbei... Ich hatte mich damit shconmal vor wenigen Wochen beschäftigt und empfand es iwie als anstrengend. Aber wenns einem hinterher soviel erleichtert lohnt es sich ja offenbar...

Gruß,

Chris


----------

