Есть ли способ не включать jar в сгенерированную войну, одновременно включая версию в pom в META-INF?

#java #maven #jar #pom.xml #war

#java #maven #jar #pom.xml #Война

Вопрос:

Проекты, с которыми я работаю, состоят из основного модуля и 4 других модулей, каждый со своим pom

  • Главная
  • B
  • C
  • D
  • Веб

Основной модуль имеет все зависимости, перечисленные в его POM в dependencyManagement, вместе с версией. Остальные включают только библиотеку в зависимости от их POM без номера версии.

Веб-модуль — это тот, который мы экспортируем как WAR, который при создании включает свой POM в META-INF.

Сценарий 1

Есть ли способ сгенерировать файл WAR, который не включает все jar, за исключением тех, которые соответствуют другим модулям?

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

Сценарий 2

В противном случае, если нет такого способа добиться этого с помощью POM, есть ли способ хотя бы отразить номера версий, включенные в основной модуль, в pom META-INF ВОЙНЫ?

В этом другом сценарии, по крайней мере, я мог бы удалить файлы jar с помощью скрипта, а затем запустить команду maven для копирования зависимостей на целевом компьютере, не тратя дополнительное время на отправку файлов jar, которые в противном случае могли бы быть там.

Ответ №1:

Вы можете предотвратить включение нежелательных jar-файлов в окончательный файл WAR, изменив их область действия на предоставленную

     <dependency>
        <groupId>groupId</groupId>
        <artifactId>artifactId</artifactId>
        <version>version</version>
        <scope>provided</scope>
    </dependency>