Задать вопрос
@6826627
программист 1С

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 при использовании этого тэга. Но зависимости, да, не попадают в него.
  • Вопрос задан
  • 109 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
xez
@xez Куратор тега Java
TL Junior Roo
В джаве все необходимые библиотеки должны быть доступны в classpath. Classpath указывается при запуске java. В томкате, в конфиг файлах, тоже есть переменные, которые добавляются в classpath.
Вам нужно собрать самостоятельно все нужные библиотеки и скопировать их в любую из папок, которые указаны в classpath.
Насколько я помню, одна из них ~tomcat/lib; так же можно указать свою через конфиги.
Зависимости мавен умеет копировать сам: https://maven.apache.org/plugins/maven-dependency-...
Ответ написан
Комментировать
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
Тебе проще всего разбить своей проект на 2 проекта. Первое это нужные jar-библиотеки log4j, postgres jdbc, jackson и сделать просто упаковку их в один артифакт. И второе - это основной код который зависит от этих библиотек.

Связь между проектами можно организовать через maven repository.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы