Frage

Ich spiele mit der Idee, Uber-Gläser für meine Dienste zu erstellen, aber ich mache mir Sorgen, dass sie Gläser einschließlich der Konfliktabhängigkeiten haben.Was passiert, wenn Jar A von SLF4J-1.0 und JAR B abhängt, abhängig von SLF4J-2.0 und es gab wesentliche Änderungen zwischen 1,0 und 2.0?Wenn diese Gläser beide in das Uber Jar enthalten sind, muss ich bestimmte Filter mit dem Namespace schreiben oder während des Schattenprozesses etwas passieren, das die namespacing die Gläser?

danke für die hilfe

War es hilfreich?

Lösung

Sie sind richtig, um sich Sorgen zu machen.Sie enden mit Kollisionen (ein Kollege namens It 'dll Hölle überall wieder') und manchmal können Sie Klassen von V1 und V2 im selben Verzeichnis im Glänzchen haben.

Sie können eine oder die andere Version einfach ausschließen, aber wenn Ihre Abhängigkeiten sie beide benötigen, sind Sie mit den folgenden Optionen konfrontiert:

  • Finden Sie eine neue Abhängigkeit, die den Konflikt nicht hat
  • Upgrade oder Downgrade einer aktuellen Abhängigkeit, um Versionen in Zeile
  • mitzubringen
  • Schiff als Kriegsdatei oder eine andere Art von Datei, die dies besser behandelt, einschließlich eines normalen Jarfils mit einem Manifest, der einen Klassenpfad
  • enthält
  • Betrachten Sie den Federstiefel, der eine andere Strategie als SHADING verwendet: http://docs.spring.io/spring-boot/docs/current-snapshot/reference/htmlsingle/#execular-jar

Was auch immer Sie tun, Gradle-Abhängigkeiten ist hilfreich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top