Что такое Uber Jar?

Я читаю документацию Maven и наткнулся на название "uber-jar".

Что означает Uber-Jar и каковы его особенности / преимущества?

4 ответа

Решение

Über это немецкое слово для above или же over, как в строке из предыдущего государственного гимна: Deutschland, Deutschland, über alles (Германия, Германия превыше всего).

Следовательно, в этом контексте uber-jar - это "over-jar", на один уровень выше простого "jar", определяемого как тот, который содержит как ваш пакет, так и все его зависимости в одном файле JAR. Можно предположить, что название происходит от того же самого конфига, что и ultrageek, superman, гиперпространство и метаданные, которые имеют сходное значение "за пределами нормы".

Преимущество состоит в том, что вы можете распространять свой uber-jar и вообще не заботиться о том, установлены ли зависимости в месте назначения, так как ваш uber-jar фактически не имеет зависимостей.

Все зависимости ваших собственных вещей внутри uber-jar также находятся внутри этого uber-jar. Как и все зависимости этих зависимостей. И так далее.

банку убар также называют толстой банкой, то есть банкой с зависимостями.
Существует три распространенных метода создания Uber JAR:

  1. Unshaded: распакуйте все файлы JAR, затем упакуйте их в один JAR. Работает с загрузчиком классов Java по умолчанию. Инструменты maven-Assembly-плагин
  2. Затенение: то же самое, что и затенение, но переименование (т. Е. " Затенение ") всех пакетов всех зависимостей. Работает с загрузчиком классов Java по умолчанию. Предотвращает некоторые (не все) конфликты версий зависимостей. Инструменты Maven-Shade-плагин
  3. JAR-файлы JAR: окончательный JAR-файл содержит другие JAR-файлы, встроенные в него. Предотвращает конфликты версий зависимостей. Все файлы ресурсов сохраняются. Инструменты: Eclipse JAR File Exporter

для большего

Определение Паксдиабло действительно хорошо.

Кроме того, пожалуйста, рассмотрите возможность предоставления uber-jar иногда довольно интересно, если вы действительно хотите распространять программное обеспечение и не хотите, чтобы клиент самостоятельно загружал зависимости. В качестве отступления, если их собственная политика не разрешает использование какой-либо библиотеки или если им приходится связывать некоторые дополнительные компоненты (slf4j, системные совместимые библиотеки, arch specialiez libs, ...), это, вероятно, увеличит трудности для них.,

Вы можете выполнить это:

Более чистое решение состоит в том, чтобы отдельно предоставить библиотеку; maven-shade-plugin имеет предварительно сконфигурированный дескриптор для этого. Это не сложнее сделать (с maven и его плагином).

Наконец, действительно хорошим решением является использование OSGI Bundle. Есть много хороших уроков по этому вопросу:)

Для дальнейшей настройки, пожалуйста, прочитайте эти темы:

Различные имена - это просто способы упаковки Java-приложений.

Тощий - содержит ТОЛЬКО биты, которые вы буквально вводите в редактор кода, и НИЧЕГО больше.

Тонкий - содержит все вышеперечисленное, ПЛЮС прямые зависимости приложения от вашего приложения (драйверы баз данных, библиотеки утилит и т. Д.).

Hollow - инверсия Thin - содержит только биты, необходимые для запуска вашего приложения, но НЕ содержит самого приложения. По сути, это предварительно упакованный "сервер приложений", на котором вы можете позже развернуть свое приложение, в том же стиле, что и традиционные серверы приложений Java EE, но с важными отличиями.

Fat / Uber - содержит бит, который вы буквально пишете сами, ПЛЮС прямые зависимости вашего приложения ПЛЮС биты, необходимые для запуска вашего приложения "самостоятельно".

Источник: статья из Dzone

Отправлено с: /questions/34134673/chto-takoe-tolstyij-banochka/55222521#55222521

Автономный исполняемый архив Java. В случае с uberjars WildFly Swarm это отдельный файл.jar, содержащий ваше приложение, части WildFly, необходимые для его поддержки, внутренний репозиторий зависимостей Maven, а также оболочку для начальной загрузки всего этого. видеть это

Согласно подходам к документации uber-JAR: существует три распространенных метода создания uber-JAR:

Незаштрихованный Распакуйте все файлы JAR, затем перепакуйте их в один JAR. Инструменты: плагин сборки Maven, Classworlds Uberjar

Shaded То же, что и unshaded, но переименовать (т.е. "затенять") все пакеты со всеми зависимостями. Инструменты: плагин Maven Shade

JAR файлов JAR. Последний файл JAR содержит другие встроенные файлы JAR. Инструменты: Eclipse JAR File Exporter, One-JAR.

Для Java - разработчиков, которые используют SpringBoot, ÃœBER/ JAR FAT это обычно конечный результат изpackage phase из maven (или build task если вы используете gradle).

Внутри Fat JAR можно найти META-INF каталог, внутри которого MANIFEST.MFфайл со всей информацией о классе Main. Что еще более важно, вы найдетеBOOT-INF каталог, внутри которого живет каталог lib который содержит все .jar файлы, которые являются зависимостями вашего приложения.

Другие вопросы по тегам