Что такое jar-файл?


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

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

4 175

4 ответа:

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

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

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

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

определение Paxdiablo действительно хорошо.

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

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

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

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

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

Убар банку также известен как жир банку т. е. jar с зависимостями.
Существует три распространенных метода построения Uber jar:

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

дополнительные

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