Я читаю документацію Maven і натрапив на назву "uber-jar".
Що означає uber-jar та які його особливості / переваги?
Я читаю документацію Maven і натрапив на назву "uber-jar".
Що означає uber-jar та які його особливості / переваги?
Відповіді:
Über
- це німецьке слово для above
або over
(воно фактично одночасно з англійським over
).
Отже, у цьому контексті uber-jar - це «надмірна банка», на один рівень вище від простого JAR (a) , визначеного як такий, який містить і ваш пакет, і всі його залежності в одному файлі JAR. Можна вважати, що назва походить із тієї самої стабільної, як ультрагек, супермен, гіперпростір та метадані, які всі мають схоже значення "поза нормальним".
Перевага полягає в тому, що ви можете розповсюджувати свою uber-jar і зовсім не байдуже, чи встановлені залежності в пункті призначення, оскільки ваш uber-jar насправді не має залежностей.
Усі залежності ваших власних речей в uber-jar також знаходяться в межах цього uber-jar. Як і всі залежності цих залежностей. І так далі.
(а) Я, мабуть, не повинен пояснювати, що таке JAR, розробнику Java, але я включу його для повноти. Це архів Java, в основному це один файл, який зазвичай містить ряд файлів класу Java разом із пов'язаними метаданими та ресурсами.
über
і over
є результатом систематичного вокального зсуву в старому німецькому , який також можна спостерігати в цих парах слів: geben/give
, leben/live
, haben/have
, heben/heave
і багато інших.
баночка убар також відома як жирова банка, тобто баночка із залежностями.
Існує три поширених способу побудови банку uber:
Визначення Paxdiablo дійсно добре.
Крім того, будь ласка, подумайте, що доставка убер-баночки іноді буває досить цікавою, якщо ви дійсно хочете розповсюджувати програмне забезпечення і не хочете, щоб клієнт мав завантажувати залежності самостійно. На відміну, якщо їх власна політика не дозволяє використовувати деяку бібліотеку, або якщо їм доведеться зв’язувати деякі додаткові компоненти (slf4j, lib-сумісні системи, архіви спеціалізованих libs, ...), це, ймовірно, збільшить для них труднощі .
Ви можете виконати це:
Більш чітке рішення - забезпечити свою бібліотеку окремо; maven-shadow-плагін має заздалегідь налаштований дескриптор для цього. Це не складніше зробити (з maven та його плагіном).
Нарешті, дійсно вдалим рішенням є використання пакету OSGI. На цьому є багато хороших навчальних посібників :)
Для подальшої конфігурації, будь ласка, прочитайте ці теми:
Самостійний виконуваний архів Java. У випадку з WildFly Swarm uberjars - це єдиний .jar-файл, що містить вашу програму, частини WildFly, необхідні для його підтримки, внутрішнє сховище Maven залежностей, а також shim для завантаження всього цього. дивіться це
Худий - містить ТОЛЬКІ біти, які ви буквально набираєте у своєму редакторі коду, і нічого іншого.
Тонкий - Містить усі вищезазначені ПЛЮС прямі залежності вашої програми (db-драйвери, бібліотеки утиліт тощо).
Порожня - обернена тонка - містить лише біти, необхідні для запуску програми, але НЕ містить самого додатка. В основному це попередньо упакований "сервер додатків", на який можна згодом розгорнути додаток, у тому ж стилі, що і традиційні сервери додатків Java EE, але з важливими відмінностями.
Жир / Uber - Містить біт, який ви буквально пишете собі ПЛЮС, прямі залежності вашого додатка ПЛЮС, біти, необхідні для запуску програми "самостійно".
Джерело: Стаття від Dzone
Повідомлено з: https://stackoverflow.com/a/57592130/9470346