Я читаю документацию Maven и наткнулся на имя uber-jar
.
Что означает uber-jar
и каковы его особенности / преимущества?
Я читаю документацию Maven и наткнулся на имя uber-jar
.
Что означает uber-jar
и каковы его особенности / преимущества?
Über
в переводе с немецкого означает above
или over
(на самом деле родственно английскому over
).
Следовательно, в этом контексте uber-jar - это «over-jar», на один уровень выше простого JAR (a), определенный как тот, который содержит как ваш пакет , так и em> все его зависимости в одном файле JAR. Можно подумать, что это название происходит от того же названия, что и ultrageek, superman, hyperspace и metadata, которые имеют схожее значение «за пределами нормального».
Преимущество заключается в том, что вы можете распространять свой uber-jar и совершенно не заботиться о том, установлены ли зависимости в месте назначения, поскольку ваш uber-jar на самом деле не имеет никаких зависимостей.
Все зависимости вашего собственного материала в uber-jar также внутри этого uber-jar. Как и все зависимости этих зависимостей. И так далее.
(a) Я, вероятно, не должен объяснять Java-разработчику, что такое JAR, но я включу его для полноты. Это архив Java, в основном один файл, который обычно содержит несколько файлов классов Java вместе с соответствующими метаданными и ресурсами.
über
и over
являются результатом систематического вокального сдвига в древнегерманском языке, который также можно наблюдать в этих парах слов: geben/give
, leben/live
, haben/have
, heben/heave
и многих других.
- person biziclop; 26.06.2015
ubar jar также известен как fat jar, т. е. jar с зависимостями.
Существует три распространенных метода создания uber jar:
Определение Паксдиабло действительно хорошее.
Кроме того, рассмотрите возможность доставки uber-jar иногда весьма полезно, если вы действительно хотите распространять программное обеспечение и не хотите, чтобы клиент сам загружал зависимости. В качестве недостатка, если их собственная политика не разрешает использование какой-либо библиотеки, или если они должны привязать некоторые дополнительные компоненты (slf4j, системные библиотеки, специальные библиотеки и т. Д.), Это, вероятно, усложнит им проблемы. .
Вы можете сделать это:
Более чистое решение - предоставить их библиотеку отдельно; maven-shade-plugin имеет для этого предварительно настроенный дескриптор. Это не сложнее (с maven и его плагином).
Наконец, действительно хорошее решение - использовать OSGI Bundle. По этому поводу есть много хороших туториалов :)
Для дальнейшей настройки ознакомьтесь с этими разделами:
Тощий - содержит ТОЛЬКО фрагменты, которые вы буквально вводите в редактор кода, и НИЧЕГО больше.
Тонкий - содержит все вышеперечисленное ПЛЮС прямые зависимости приложения от вашего приложения (драйверы баз данных, библиотеки утилит и т. д.).
Hollow - противоположность Thin - содержит только биты, необходимые для запуска вашего приложения, но НЕ содержит самого приложения. По сути, это предварительно упакованный «сервер приложений», на котором вы можете позже развернуть свое приложение, в том же стиле, что и традиционные серверы приложений Java EE, но с важными отличиями.
Fat / Uber - содержит бит, который вы буквально пишете сами ПЛЮС прямые зависимости вашего приложения ПЛЮС биты, необходимые для запуска вашего приложения «на его своя".
Источник: Статья из Dzone
Отправлено с: https://stackoverflow.com/a/57592130/9470346
Автономный исполняемый архив Java. В случае WildFly Swarm uberjars, это один файл .jar, содержащий ваше приложение, части WildFly, необходимые для его поддержки, внутренний репозиторий зависимостей Maven, а также прокладку для начальной загрузки всего этого. см. это
Согласно подходам к документации uber-JAR: существует три распространенных метода создания uber-JAR:
Незаштрихованные. Распакуйте все файлы JAR, затем снова упакуйте их в один JAR. Инструменты: плагин сборки Maven, Classworlds Uberjar
Затененный То же, что и без затенения, но переименовывает (т. е. затеняет) все пакеты со всеми зависимостями. Инструменты: плагин Maven Shade
JAR из JAR. Последний файл JAR содержит другие встроенные файлы JAR. Инструменты: Eclipse JAR File Exporter, One-JAR.
Для разработчиков Java, использующих SpringBoot, ÜBER / FAT JAR обычно является конечным результатом package phase
maven (или build task
, если вы используете gradle
).
Внутри Fat JAR можно найти каталог META-INF
, внутри которого находится файл MANIFEST.MF
со всей информацией, касающейся класса Main. Что еще более важно, на том же уровне каталога META-INF
вы найдете каталог BOOT-INF
, внутри которого находится каталог lib
и содержит все .jar
файлы, которые являются зависимостями вашего приложения.