Mein Projekt verwendet Java-Bibliotheken mit eigenen Abhängigkeiten (z. B. Hadoop, Jetty). Ich habe am Ende verschiedene Versionen der gleichen Abhängigkeiten wie am Beispiel 1.4.5, 1.4.6. Mein Projekt möchte vielleicht die Version 1.4.7 verwenden. Dies ist ein kleines Beispiel, kann mit größeren Abhängigkeiten wie HTTP Commons komplizierter werden.
Wie bekomme ich alle Bibliotheken und Abhängigkeiten, um nett zu spielen? Gibt es eine Möglichkeit, jede Bibliothek (Hadoop, Jetty) zu isolieren, so dass sie nur ihre Abhängigkeiten verwenden?
Maven wird das im Allgemeinen auch ziemlich gut handhaben. Wenn nicht vollständig, wird es zumindest den Großteil davon behandeln, dann können Sie die verbleibenden Probleme aussortieren.
Das bedeutet natürlich, dass du deinen Build-Prozess ändern musst, aber es könnte sich lohnen, dir nicht die Haare auszuziehen.
Sie können sich entscheiden, all diese mit einem Framework für die Verwaltung von Abhängigkeiten zu verwalten - wie OSGI. Werfen Sie einen Blick auf die dynamischen Module des Frühjahrsrahmens Ссылка
Sie können auch den Teil des Frameworks betrachten, in dem Eclipse OSGI implementiert. Schauen Sie sich hier Ссылка
anDie kurze Antwort ist nur für den kleinsten gemeinsamen Nenner. Denken Sie daran, dass das "gebilligte" Verzeichnis Ihr Freund ist - wenn es darum geht, widersprüchliche Abhängigkeiten zu verwalten.
Wenn Sie den Quellcode haben, kompilieren Sie alles zusammen. Wenn Sie dies nicht tun, müssen Sie Ihre Quelle für den niedrigsten gemeinsamen Nenner mit der Zieloption auf javac ausrichten. Sie müssen dies nur tun, wenn es beim Ausführen der Anwendung tatsächliche Probleme gibt, die selten so lange sein sollten, wie der jvm eine aktuelle Version ist (Java ist sehr streng bezüglich der Binärkompatibilität mit älteren Versionen).
J G erwähnte OSGi, das war sogar mein erster Gedanke beim Lesen dieser Frage.
Mehrere Versionen derselben Bibliothek sind ein wichtiger Punkt in OSGi. Wenn wir einige Produkte von Drittanbietern bereits erwähnt haben, denke ich, dass es fair ist, die Spezifikation dahinter zu erwähnen.
Sie können es von der offiziellen osgi-Website Ссылка
herunterladenTags und Links dependencies java