Что такое uber jar?

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

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

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

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

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

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

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

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

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

    • в основном с maven-assembly-plugin
    • немного больше с maven-shade-plugin

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

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

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

    • Должны ли вы предоставлять зависимые библиотеки в банке клиента?
    • Рекомендации по созданию и развертыванию приложений Clojure: хорошие учебные пособия?

    ubar jar также известен как жирная баночка, то есть jar с зависимостями.
    Существует три распространенных метода построения uber jar:

    1. Unshaded: распаковать все файлы JAR, а затем переупаковать их в один JAR. Работает с загрузчиком classов по умолчанию Java. Инструменты maven-assembly-plugin
    2. Shaded: То же, что и unshaded, но переименуйте (т. Е. «Shade») все пакеты всех зависимостей. Работает с загрузчиком classов по умолчанию Java. Избегает некоторых (не всех) конфликтов версий зависимостей. Инструменты maven-shade-plugin
    3. JAR of JARs: последний файл JAR содержит другие JAR-файлы, встроенные внутри. Устраняет конфликты версий зависимостей. Все файлы ресурсов сохранены. Инструменты: Eclipse JAR File Exporter

    для большего

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

    Давайте будем гением компьютера.