Od czasu do czasu widziałem też, że nazywa się to „onejar” lub „one-jar”.
Jeen Broekstra,
Odpowiedzi:
357
Überto niemieckie słowo oznaczające abovelub over(w rzeczywistości jest podobne do angielskiego over).
Dlatego w tym kontekście słoik-uber jest „słoikiem”, o jeden poziom wyżej od prostego pliku JAR (a) , zdefiniowanego jako taki, który zawiera zarówno pakiet, jak i wszystkie jego zależności w jednym pliku JAR. Nazwa może pochodzić od tej samej stajni co ultrageek, superman, hiperprzestrzeń i metadane, które wszystkie mają podobne znaczenie „poza normą”.
Zaletą jest to, że możesz dystrybuować swój słoik uber-jar i zupełnie nie dbać o to, czy zależności są instalowane w miejscu docelowym, ponieważ uber-jar faktycznie nie ma żadnych zależności.
Wszystkie zależności twoich własnych rzeczy w słoiku uber są również w tym słoju. Podobnie jak wszystkie zależności tych zależności. I tak dalej.
(a) Prawdopodobnie nie powinienem wyjaśniać programistom Java, czym jest plik JAR, ale podam go w celu uzupełnienia. Jest to archiwum Java, w zasadzie pojedynczy plik, który zazwyczaj zawiera wiele plików klasy Java wraz z powiązanymi metadanymi i zasobami.
Dziwne ... Jestem Niemcem i oczywiście znam słowo „über” i jego znaczenie. Ale dlaczego jest tu używany w kontekście Maven? Ten przypadek oznacza, że jedna lub więcej rzeczy jest zebranych razem i jest dostępny przez wygenerowany słoik. Niestety ta podpowiedź nie przesłoniła mojego problemu z maven ;-)
Bjoern
7
BTW, überi oversą wynikiem systematycznego przesunięcia wokalnego w starych germańskich, które mogą być również obserwowane w tych par słów: geben/give, leben/live, haben/have, heben/heavei wiele innych.
Biorąc pod uwagę, jak wiele żalu odczuwałem próbując edukować ludzi, postanowiłem po prostu usunąć rzeczy, na które niektórzy wciąż narzekają. Nadal definiuję Ubera w kontekście języka niemieckiego, ale lekcja historii (nieco pełna) już minęła :-)
paxdiablo
58
słoik Ubar jest również znany jako słoik tłuszczu, tj. słoik z zależnościami.
Istnieją trzy popularne metody konstruowania słoika Uber:
Bez cieniowania: rozpakuj wszystkie pliki JAR, a następnie ponownie je zapakuj w jeden plik JAR. Działa z domyślnym modułem ładującym klasy Java. Narzędzia maven-assembly-plugin
Zacieniowany: Taki sam jak bezcieniowany, ale zmień nazwę (tzn. „Cień”) wszystkich pakietów wszystkich zależności. Działa z domyślnym modułem ładującym klasy Java. Unika niektórych (nie wszystkich) konfliktów wersji zależności. Narzędzia maven-shadow-plugin
JAR z JAR: Ostateczny plik JAR zawiera inne pliki JAR osadzone w nim. Unika kolizji wersji zależności. Wszystkie pliki zasobów są zachowane. Narzędzia: Eksporter plików JAR Eclipse
Ponadto rozważ dostarczenie słoika do uber-jar jest czasem dość interesujące, jeśli naprawdę chcesz rozpowszechniać oprogramowanie i nie chcesz, aby klient musiał sam pobierać zależności. Wadą tego jest fakt, że jeśli ich własne zasady nie zezwalają na korzystanie z niektórych bibliotek lub jeśli muszą powiązać niektóre dodatkowe komponenty (slf4j, biblioteki lib zgodne z systemem, biblioteki arch specialiez, ...) prawdopodobnie zwiększy to ich trudności .
Czystszym rozwiązaniem jest oddzielne udostępnienie swojej biblioteki; maven-shadow-plugin ma wstępnie skonfigurowany deskryptor. Nie jest to bardziej skomplikowane (z maven i jego wtyczką).
Wreszcie, naprawdę dobrym rozwiązaniem jest użycie pakietu OSGI. Jest na to mnóstwo dobrych samouczków :)
W celu dalszej konfiguracji zapoznaj się z tymi tematami:
Samodzielne, wykonywalne archiwum Java. W przypadku uberjars WildFly Swarm jest to pojedynczy plik .jar zawierający twoją aplikację, części WildFly wymagane do jej obsługi, wewnętrzne repozytorium zależności Maven oraz shim, aby wszystko uruchomić. Zobacz
Różne nazwy to tylko sposoby pakowania aplikacji Java.
Chudy - zawiera TYLKO bity, które dosłownie wpisujesz w edytorze kodu, i NIC NIE.
Cienki - zawiera wszystkie powyższe PLUS bezpośrednie zależności aplikacji od aplikacji (sterowniki db, biblioteki narzędzi itp.).
Hollow - odwrotność cienkich - zawiera tylko bity potrzebne do uruchomienia aplikacji, ale NIE zawiera samej aplikacji. Zasadniczo wstępnie zapakowany „serwer aplikacji”, na którym można później wdrożyć aplikację, w tym samym stylu co tradycyjne serwery aplikacji Java EE, ale z istotnymi różnicami.
Tłuszcz / Uber - zawiera fragment, który dosłownie sam piszesz PLUS bezpośrednie zależności aplikacji PLUS bity potrzebne do uruchomienia aplikacji „na własną rękę”.
Odpowiedzi:
Über
to niemieckie słowo oznaczająceabove
lubover
(w rzeczywistości jest podobne do angielskiegoover
).Dlatego w tym kontekście słoik-uber jest „słoikiem”, o jeden poziom wyżej od prostego pliku JAR (a) , zdefiniowanego jako taki, który zawiera zarówno pakiet, jak i wszystkie jego zależności w jednym pliku JAR. Nazwa może pochodzić od tej samej stajni co ultrageek, superman, hiperprzestrzeń i metadane, które wszystkie mają podobne znaczenie „poza normą”.
Zaletą jest to, że możesz dystrybuować swój słoik uber-jar i zupełnie nie dbać o to, czy zależności są instalowane w miejscu docelowym, ponieważ uber-jar faktycznie nie ma żadnych zależności.
Wszystkie zależności twoich własnych rzeczy w słoiku uber są również w tym słoju. Podobnie jak wszystkie zależności tych zależności. I tak dalej.
(a) Prawdopodobnie nie powinienem wyjaśniać programistom Java, czym jest plik JAR, ale podam go w celu uzupełnienia. Jest to archiwum Java, w zasadzie pojedynczy plik, który zazwyczaj zawiera wiele plików klasy Java wraz z powiązanymi metadanymi i zasobami.
źródło
über
iover
są wynikiem systematycznego przesunięcia wokalnego w starych germańskich, które mogą być również obserwowane w tych par słów:geben/give
,leben/live
,haben/have
,heben/heave
i wiele innych.słoik Ubar jest również znany jako słoik tłuszczu, tj. słoik z zależnościami.
Istnieją trzy popularne metody konstruowania słoika Uber:
po więcej
źródło
Definicja Paxdiablo jest naprawdę dobra.
Ponadto rozważ dostarczenie słoika do uber-jar jest czasem dość interesujące, jeśli naprawdę chcesz rozpowszechniać oprogramowanie i nie chcesz, aby klient musiał sam pobierać zależności. Wadą tego jest fakt, że jeśli ich własne zasady nie zezwalają na korzystanie z niektórych bibliotek lub jeśli muszą powiązać niektóre dodatkowe komponenty (slf4j, biblioteki lib zgodne z systemem, biblioteki arch specialiez, ...) prawdopodobnie zwiększy to ich trudności .
Możesz to zrobić:
Czystszym rozwiązaniem jest oddzielne udostępnienie swojej biblioteki; maven-shadow-plugin ma wstępnie skonfigurowany deskryptor. Nie jest to bardziej skomplikowane (z maven i jego wtyczką).
Wreszcie, naprawdę dobrym rozwiązaniem jest użycie pakietu OSGI. Jest na to mnóstwo dobrych samouczków :)
W celu dalszej konfiguracji zapoznaj się z tymi tematami:
źródło
Samodzielne, wykonywalne archiwum Java. W przypadku uberjars WildFly Swarm jest to pojedynczy plik .jar zawierający twoją aplikację, części WildFly wymagane do jej obsługi, wewnętrzne repozytorium zależności Maven oraz shim, aby wszystko uruchomić. Zobacz
źródło
Różne nazwy to tylko sposoby pakowania aplikacji Java.
Chudy - zawiera TYLKO bity, które dosłownie wpisujesz w edytorze kodu, i NIC NIE.
Cienki - zawiera wszystkie powyższe PLUS bezpośrednie zależności aplikacji od aplikacji (sterowniki db, biblioteki narzędzi itp.).
Hollow - odwrotność cienkich - zawiera tylko bity potrzebne do uruchomienia aplikacji, ale NIE zawiera samej aplikacji. Zasadniczo wstępnie zapakowany „serwer aplikacji”, na którym można później wdrożyć aplikację, w tym samym stylu co tradycyjne serwery aplikacji Java EE, ale z istotnymi różnicami.
Tłuszcz / Uber - zawiera fragment, który dosłownie sam piszesz PLUS bezpośrednie zależności aplikacji PLUS bity potrzebne do uruchomienia aplikacji „na własną rękę”.
Źródło: artykuł Dzone
Przesłane z: https://stackoverflow.com/a/57592130/9470346
źródło