Я читаю документацию Maven и натолкнулся на название «uber-jar».
Что означает Uber-Jar и каковы его особенности / преимущества?
Я читаю документацию Maven и натолкнулся на название «uber-jar».
Что означает Uber-Jar и каковы его особенности / преимущества?
Ответы:
Über
это немецкое слово для above
или over
(это на самом деле родственный с английским over
).
Следовательно, в этом контексте uber-jar - это «over-jar», на один уровень выше простого JAR (a) , определяемого как тот, который содержит и ваш пакет, и все его зависимости в одном файле JAR. Можно предположить, что название происходит от того же самого конфига, что и ultrageek, superman, гиперпространство и метаданные, которые имеют схожие значения «за пределами нормы».
Преимущество состоит в том, что вы можете распространять свой uber-jar и вообще не заботиться о том, установлены ли зависимости в месте назначения, так как ваш uber-jar фактически не имеет зависимостей.
Все зависимости ваших собственных вещей внутри uber-jar также находятся внутри этого uber-jar. Как и все зависимости этих зависимостей. И так далее.
(a) Мне, вероятно, не нужно объяснять, что такое JAR для разработчика Java, но я приведу его для полноты. Это архив Java, в основном один файл, который обычно содержит несколько файлов классов Java вместе с соответствующими метаданными и ресурсами.
über
и over
являются результатом систематического вокального сдвига в старом германском , который также можно наблюдать в этих парах слов: geben/give
, leben/live
, haben/have
, heben/heave
и многие другие.
банку убар также называют толстой банкой, то есть банкой с зависимостями.
Существует три распространенных метода создания Uber JAR:
Определение Паксдиабло действительно хорошо.
Кроме того, пожалуйста, рассмотрите возможность предоставления uber-jar иногда довольно интересно, если вы действительно хотите распространять программное обеспечение и не хотите, чтобы клиент самостоятельно загружал зависимости. В качестве отступления, если их собственная политика не разрешает использование некоторой библиотеки или если им приходится связывать некоторые дополнительные компоненты (slf4j, системные совместимые библиотеки, arch specialiez libs, ...), это, вероятно, увеличит трудности для них. ,
Вы можете выполнить это:
Более чистое решение состоит в том, чтобы отдельно предоставить библиотеку; maven-shade-plugin имеет предварительно настроенный дескриптор для этого. Это не сложнее сделать (с maven и его плагином).
Наконец, действительно хорошим решением является использование OSGI Bundle. Есть много хороших уроков по этому вопросу :)
Для дальнейшей настройки, пожалуйста, прочитайте эти темы:
Автономный исполняемый архив Java. В случае с uberjars WildFly Swarm это отдельный файл .jar, содержащий ваше приложение, части WildFly, необходимые для его поддержки, внутренний репозиторий зависимостей Maven, а также оболочку для начальной загрузки всего этого. посмотри это
Skinny - содержит ТОЛЬКО биты, которые вы буквально вводите в редактор кода, и НИЧЕГО больше.
Тонкий - Содержит все вышеперечисленное, а также прямые зависимости приложения от вашего приложения (драйверы БД, служебные библиотеки и т. Д.).
Пустота - обратная сторона тонких - Содержит только биты, необходимые для запуска вашего приложения, но НЕ содержит самого приложения. По сути, это предварительно упакованный «сервер приложений», на котором вы можете позднее развернуть свое приложение в том же стиле, что и традиционные серверы приложений Java EE, но с существенными отличиями.
Fat / Uber - содержит бит, который вы буквально пишете себе, плюс прямые зависимости вашего приложения, плюс биты, необходимые для запуска вашего приложения «самостоятельно».
Источник: статья из Dzone
Перепечатано с: https://stackoverflow.com/a/57592130/9470346
Согласно подходам документации Uber-JAR: Существует три распространенных метода построения Uber-JAR:
Unshaded Распакуйте все файлы JAR, затем упакуйте их в один JAR. Инструменты: плагин Maven Assembly, Classworlds Uberjar
Затененный То же, что и не затененный , но переименование (т. Е. « Затенение ») всех пакетов всех зависимостей. Инструменты: плагин Maven Shade
JAR-файлы JAR В последнем JAR-файле содержатся другие JAR-файлы, встроенные в него. Инструменты: Eclipse JAR File Exporter, One-JAR.