Доставка одной банки с проектом Maven - PullRequest
7 голосов
/ 06 октября 2010

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

Есть идеи?

Ответы [ 4 ]

13 голосов
/ 06 октября 2010

Если вы действительно хотите пойти в этом направлении, есть несколько способов сделать это:

  • с помощью Maven Assembly Plugin и, возможно, jar-with-dependencies предопределенный дескриптор сборки (который будет распаковывать зависимости)
  • с Maven Shade Plugin (аналогично предыдущему, но дает большую гибкость)
  • с Плагин Maven One-Jar (который использует One-JAR и его собственный загрузчик классов для обеспечения возможности размещения JAR-файлов)

В зависимости от ваших точных требований и ограничений, вы можете предпочестьодин или другой.

8 голосов
/ 06 октября 2010

Прежде всего, спросите себя, есть ли у вас действительно веская причина для упаковки вашего приложения и всех его зависимостей в одну банку.Я не нашел очень много веских причин для этого (большинство причин связано с глупостью организационной политики или просто невежеством).Нужно оставить библиотеки в своих собственных jar-файлах и предоставить файл .zip / .tar.gz, содержащий все ваши библиотеки и ваше приложение, либо с

  1. исполняемым файлом .jar с настройкой classpath соответствующим образомв вашем файле MANFIEST.MF
  2. сценарий .bat / .sh, который вызывает java и создает соответствующий путь к классу на основе ваших операций

И наоборот, используйте JNLP (более известный как Java WebНачало).

Если вы действительно хотите, чтобы maven связывал все ваши зависимости и ваше приложение под одним jar, вам нужно использовать предопределенную сборку "jar-with-dependencies" .На странице использования maven сборочного плагина также показано, как это можно сделать.

1 голос
/ 14 августа 2012

Вы также можете попробовать плагин Maven Shade. http://maven.apache.org/plugins/maven-shade-plugin/

Общие инструкции по использованию плагина Shade можно найти на странице использования. Некоторые более конкретные случаи использования описаны в приведенных ниже примерах. И последнее, но не менее важное: пользователи время от времени добавляют дополнительные примеры, советы или исправления на вики-страницу плагина.

Если у вас все еще есть вопросы относительно использования плагина, пожалуйста, не стесняйтесь обращаться к списку рассылки пользователя. Сообщения в списке рассылки заархивированы и могут уже содержать ответ на ваш вопрос как часть старой ветки. Следовательно, также стоит просмотреть / поискать в почтовом архиве.

Если вы чувствуете, что в плагине отсутствует функция или имеется дефект, вы можете заполнить запрос функции или сообщить об ошибке в нашем трекере ошибок. При создании новой проблемы, пожалуйста, предоставьте исчерпывающее описание вашей проблемы. Особенно для исправления ошибок важно, чтобы разработчики могли воспроизвести вашу проблему. По этой причине очень ценятся полные журналы отладки, POM или, что более предпочтительно, небольшие демонстрационные проекты, связанные с проблемой. Конечно, патчи тоже приветствуются. Участники могут проверить проект из нашего исходного хранилища и найти дополнительную информацию в руководстве по оказанию помощи с Maven.

0 голосов
/ 06 октября 2010

На самом деле, вложение файлов .jar невозможно. В банке не может быть других банок.

.war и .ear файлы могут содержать файлы jar, и это хорошее решение, если вы поставляете приложение J2EE.

Однако, если ваше приложение просто J2SE, я рекомендую взглянуть на плагин Maven Assembly . Как видно из названия, он позволяет вам создать единый двоичный дистрибутив вашей сборки.

...