Ich lese die Maven-Dokumentation und bin auf den Namen 'uber-jar' gestoßen.
Was bedeutet ein Überglas und was sind seine Eigenschaften / Vorteile?
Ich lese die Maven-Dokumentation und bin auf den Namen 'uber-jar' gestoßen.
Was bedeutet ein Überglas und was sind seine Eigenschaften / Vorteile?
Antworten:
Über
ist das deutsche Wort für above
oder over
(es ist tatsächlich mit dem Englischen verwandt over
).
In diesem Zusammenhang ist ein Uber-JAR ein "Over-JAR", eine Ebene höher als eine einfache JAR (a) , definiert als eine, die sowohl Ihr Paket als auch alle seine Abhängigkeiten in einer einzigen JAR-Datei enthält. Es kann angenommen werden, dass der Name aus demselben Stall stammt wie Ultrageek, Superman, Hyperraum und Metadaten, die alle ähnliche Bedeutungen von "jenseits des Normalen" haben.
Der Vorteil ist , dass Sie Ihr uber-jar verteilen können und kümmern sich nicht auf allen , ob nicht Abhängigkeiten am Ziel installiert, wie Ihr uber-jar tatsächlich hat keine Abhängigkeiten.
Alle Abhängigkeiten Ihrer eigenen Sachen innerhalb des Überglases befinden sich auch in diesem Überglas. Wie alle Abhängigkeiten dieser Abhängigkeiten. Und so weiter.
(a) Ich sollte einem Java-Entwickler wahrscheinlich nicht erklären müssen, was eine JAR ist, aber ich werde sie der Vollständigkeit halber hinzufügen. Es handelt sich um ein Java-Archiv, im Grunde genommen um eine einzelne Datei, die normalerweise eine Reihe von Java-Klassendateien sowie zugehörige Metadaten und Ressourcen enthält.
über
und over
ist das Ergebnis einer systematischen Vokalverschiebung in altgermanischen , die auch in diesen Wortpaaren beobachtet werden können: geben/give
, leben/live
, haben/have
, heben/heave
und viele mehr.
Ubars Glas ist auch bekannt als Fett jar dh Glas mit Abhängigkeiten.
Es gibt drei gängige Methoden zum Aufbau eines Überglases:
Die Paxdiablo-Definition ist wirklich gut.
Darüber hinaus ist es manchmal sehr interessant, ein Uber-JAR zu liefern, wenn Sie wirklich eine Software vertreiben möchten und nicht möchten, dass der Kunde Abhängigkeiten selbst herunterladen muss. Wenn ihre eigene Richtlinie die Verwendung einer Bibliothek nicht zulässt oder wenn sie einige zusätzliche Komponenten (slf4j, systemkonforme Bibliotheken, Arch Specialiez-Bibliotheken, ...) binden müssen, wird dies wahrscheinlich die Schwierigkeiten für sie erhöhen .
Sie können das ausführen:
Eine sauberere Lösung besteht darin, ihre Bibliothek separat bereitzustellen. Das Maven-Shade-Plugin hat dafür einen vorkonfigurierten Deskriptor. Dies ist nicht komplizierter (mit Maven und seinem Plugin).
Eine wirklich gute Lösung ist schließlich die Verwendung eines OSGI-Bundles. Es gibt viele gute Tutorials dazu :)
Lesen Sie zur weiteren Konfiguration die folgenden Themen:
Ein in sich geschlossenes, ausführbares Java-Archiv. Bei WildFly Swarm-Uberjars handelt es sich um eine einzelne JAR-Datei, die Ihre Anwendung, die zur Unterstützung erforderlichen Teile von WildFly, ein internes Maven-Repository mit Abhängigkeiten sowie einen Shim zum Booten aller Elemente enthält. Sieh dir das an
Dünn - Enthält NUR die Bits, die Sie buchstäblich in Ihren Code-Editor eingeben, und NICHTS anderes.
Dünn - Enthält alle oben genannten PLUS die direkten Abhängigkeiten der App von Ihrer App (DB-Treiber, Dienstprogrammbibliotheken usw.).
Hollow - Die Umkehrung von Thin - Enthält nur die zum Ausführen Ihrer App erforderlichen Bits, enthält jedoch NICHT die App selbst. Grundsätzlich ein vorgefertigter „App-Server“, auf dem Sie Ihre App später bereitstellen können, im gleichen Stil wie herkömmliche Java EE-App-Server, jedoch mit wichtigen Unterschieden.
Fett / Uber - Enthält das Bit Sie sich buchstäblich schreiben PLUS die direkten Abhängigkeiten Ihrer Anwendung PLUS die Bits benötigt , um Ihre App „auf seinem eigenen“ laufen.
Quelle: Artikel von Dzone
Neu gepostet von: https://stackoverflow.com/a/57592130/9470346