Что такое 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:
- Unshaded: распакуйте все файлы JAR, затем упакуйте их в один JAR. Работает с загрузчиком классов Java по умолчанию. Инструменты maven-Assembly-плагин
- Затенение: то же самое, что и затенение, но переименование (т. Е. " Затенение ") всех пакетов всех зависимостей. Работает с загрузчиком классов Java по умолчанию. Предотвращает некоторые (не все) конфликты версий зависимостей. Инструменты Maven-Shade-плагин
- JAR-файлы JAR: окончательный JAR-файл содержит другие JAR-файлы, встроенные в него. Предотвращает конфликты версий зависимостей. Все файлы ресурсов сохраняются. Инструменты: Eclipse JAR File Exporter
Определение Паксдиабло действительно хорошо.
Кроме того, пожалуйста, рассмотрите возможность предоставления uber-jar иногда довольно интересно, если вы действительно хотите распространять программное обеспечение и не хотите, чтобы клиент самостоятельно загружал зависимости. В качестве отступления, если их собственная политика не разрешает использование какой-либо библиотеки или если им приходится связывать некоторые дополнительные компоненты (slf4j, системные совместимые библиотеки, arch specialiez libs, ...), это, вероятно, увеличит трудности для них.,
Вы можете выполнить это:
- в основном с Maven-сборка-плагин
- немного дальше с maven-shade-plugin
Более чистое решение состоит в том, чтобы отдельно предоставить библиотеку; 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
файлы, которые являются зависимостями вашего приложения.