Создание жировой банки с использованием maven

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

Я слышал, что это можно сделать с помощью maven-assembly-plug-in , но я не понимаю, как это сделать. Может ли кто-нибудь указать мне на некоторые примеры.

Прямо сейчас, я использую толстую банку, чтобы расслоить последнюю банку. Я хочу добиться того же, используя maven.

Добавьте следующий плагин к вашему pom.xml . Последняя версия может быть найдена на странице https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-assembly-plugin

  ...    org.apache.maven.plugins maven-assembly-plugin CHOOSE LATEST VERSION HERE   jar-with-dependencies     assemble-all package  single       

После настройки этого подключаемого модуля запуск mvn package приведет к созданию двух банок: одного, содержащего только classы проекта, и второго куска жира со всеми зависимостями с суффиксом «-jar-with-dependencies».

если вам нужна правильная настройка classpath во время выполнения, то также добавьте следующий плагин

   org.apache.maven.plugins maven-jar-plugin    true fully.qualified.MainClass     

Вы можете использовать плагин maven-shade .

После настройки плагина тени в вашей сборке команда mvn package создаст одну банку со всеми связанными с ней зависимостями.

Возможно, вы хотите, чтобы maven-shade-plugin , зависания пакетов, минимизировали неиспользуемый код и скрывали внешние зависимости, чтобы избежать конфликтов.

    org.apache.maven.plugins maven-shade-plugin 3.1.1   package  shade   true true  ${java.io.tmpdir}/dependency-reduced-pom.xml    com.acme.coyote hidden.coyote         

Рекомендации:

фактически, добавив

   true com.some.pkg com.MainClass   

Объявление maven-jar-plugin не добавляет для меня основную запись classа в файл манифеста. Я должен был добавить его в maven-assembly-plugin, чтобы получить это в манифесте

Вы можете использовать onejar-maven-plugin для упаковки. В основном, он собирает ваш проект и его зависимости в виде одной банки, включая не только файл проекта jar, но и все внешние зависимости как «банку банок», например

    com.jolira onejar-maven-plugin 1.4.4    one-jar       

Примечание 1: Параметры конфигурации доступны на домашней странице проекта.

Примечание 2: По той или иной причине проект onejar-maven-plugin не публикуется в Maven Central. Однако jolira.com отслеживает оригинальный проект и публикует его с помощью groupId com.jolira .

Альтернативой является использование плагина maven shade для создания uber-jar .

  org.apache.maven.plugins maven-shade-plugin  Your Version Here       package  shade     
Давайте будем гением компьютера.