Mischen verschiedener Versionen von Java-Bibliotheken

8

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?

    
Amanibhavam 08.11.2008, 03:45
quelle

5 Antworten

2

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.

    
Spencer Kormos 08.11.2008 05:04
quelle
2

JarJar zur Rettung!

Ein ant taks, dass sowohl 1) viele Gläser in einen zusammenfasst und 2) erlaubt, Abhängigkeiten in Klassendateien umzubenennen und somit zwei Versionen derselben Bibliothek zu laden!

    
akuhn 10.11.2008 04:03
quelle
2

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 Ссылка

an

Die 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.

    
hawkeye 08.11.2008 04:25
quelle
1

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).

    
Jason Coco 08.11.2008 03:57
quelle
0

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 Ссылка

herunterladen     
Toni Menzel 11.11.2008 09:21
quelle

Tags und Links