Spring boot 2.7+Tomcat9+.war: как вынести зависимости WEB-INF/lib в отдельный пакет?
Дано: приложение "kafka-consumer", которое через профили maven собирается в 10 .war-файлов с разными настройками в application.properties.
Публикуется на Tomcat 9.
Каждый .war имеет размер 40 Мб, и содержит в себе все .jar-зависимости, например, log4j, postgres jdbc, jackson и т.д.
В IDEA при сборке jar есть опция "не включать зависимости".
А есть ли способ сделать это для моей ситуации?
Про provided знаю, но не понял, как его использовать. War-файл не деплоится на Tomcat при использовании этого тэга. Но зависимости, да, не попадают в него.
В джаве все необходимые библиотеки должны быть доступны в classpath. Classpath указывается при запуске java. В томкате, в конфиг файлах, тоже есть переменные, которые добавляются в classpath.
Вам нужно собрать самостоятельно все нужные библиотеки и скопировать их в любую из папок, которые указаны в classpath.
Насколько я помню, одна из них ~tomcat/lib; так же можно указать свою через конфиги.
Зависимости мавен умеет копировать сам: https://maven.apache.org/plugins/maven-dependency-...
Тебе проще всего разбить своей проект на 2 проекта. Первое это нужные jar-библиотеки log4j, postgres jdbc, jackson и сделать просто упаковку их в один артифакт. И второе - это основной код который зависит от этих библиотек.
Связь между проектами можно организовать через maven repository.