Как построить Uberjars с зависимостями

У меня есть модуль Maven, генерирующий файл JAR. Меня попросили разработать пару других файлов uberjar как побочный продукт процесса сборки. Мне также сказали, что эти 2 jar-файла являются jar-файлами апплета, которые необходимо включить в некоторые классы из зависимостей модуля maven.

Я оглянулся и сузился до этих 3 вариантов -

  1. Плагин Maven Assembly - может создавать пользовательские jar-файлы из классов, сгенерированных модулем maven. Сторонние зависимости не могут быть включены.
  2. Используйте ant через Maven - используйте maven-dependency-plugin, чтобы распаковать зависимости, а затем упаковать jar апплета через ant-скрипты.
  3. Используйте плагин Maven Shade - хотя этот плагин не подходит для моего требования, я могу заставить его работать.

Хотя я могу заставить вещи работать с (b) и (c), я не могу решить, какой из них использовать. Одна ключевая вещь, которую я заметил, это использование плагина зависимостей, занимающего много времени.

Я хотел знать, есть ли другие способы достичь того же требования.

2 ответа

Решение

Вы можете включить зависимости, используя плагин сборки с dependencySet элементы см.:

В частности, вот пример, взятый из блога Эндрю Бруно:

<dependencySets>
  <dependencySet>
    <outputDirectory></outputDirectory>
    <outputFileNameMapping></outputFileNameMapping>
    <unpack>true</unpack>
    <scope>runtime</scope>
    <includes>
      <include>commons-lang:commons-lang</include>
      <include>commons-cli:commons-cli</include>
    </includes>
  </dependencySet>
</dependencySets>

Наконец, я использовал плагин сборки, используя тот же подход, который вы описали выше. Я отошел от плагина Shade, так как я генерирую несколько сборок с использованием ресурсов извне Maven, и у плагина Shade нет большой поддержки для таких задач.

Другие вопросы по тегам