2014-12-26 4 views
0

У меня есть проект maven, который разбит на несколько подмодулей. Структура выглядит следующим образом:Упаковка подмодулей maven в один архив

  • база - который является родителем для всех submdules
  • база/бом - вексельные материалов
  • базовые/основные - логические приложения и общественные интерфейсы
  • base/gui-impl - реализация gui (зависит от ядра)

Я хотел бы добавить еще один модуль, который будет отвечать за упаковку всего приложения в один исполняемый JAR. К сожалению, если я просто создаю этот подмодуль и определяю зависимости с другими модулями, я получу jar, содержащий другие баночки (а не только скомпилированные классы). Кстати, ядро ​​будет упаковано дважды (потому что gui-impl также зависит от ядра).

Как решить эту проблему? Есть ли какой-нибудь плагин maven, который мог бы мне помочь?

+0

Какой плагин вы используете для упаковки? То, что вы описали, не похоже на стандартный результат упаковки maven (банку, содержащую другие банки). Обычно все банки объединены в один, и нет дубликатов. – miljanm

ответ

1

Если вы хотите, чтобы одна исполняемая банка, которая включает все зависимости, использует maven-shade-plugin. Независимо от того, насколько запутаны они, вы не будете получать дублированный импорт. Также вам не нужно создавать для него отдельный подмодуль, вы можете сделать это на уже существующем верхнем уровне (но это зависит от вас).

Другие известные плагины для этой цели являются maven-assembly-plugin для сложных потребностей упаковки и appassembler-maven-plugin, которые не производят ни одного баночку, но хороший макет каталога с бен /, Conf /, Lib/директории и сценарии выполнения, которые я предпочитаю для конца пользовательских приложений. Обычно я использую appassembler, чтобы создавать каталоги приложений, а затем упаковывать их в tar.gz или .zip, используя сборку-плагин для распространения.

0

Спасибо за ваши ответы, но я понял, что случилось. Внутри моего подмодуля упаковки я установил упаковку в JAR, ожидая, что это будет окончательный, работоспособный продукт: < Я прочитал о maven-assembly-plugin (как упоминалось в miljanm), а затем я изменил упаковку на pom и добавил конфигурацию для этого плагина. maven-assembly-plugin - это все, что я хочу, он позволяет мне упаковывать все подмодули в единую исполняемую банку без упаковки одной банки в другую и без дублирования. Спасибо!