Spring boot 2.7+Tomcat9+.war: как вынести зависимости WEB-INF/lib в отдельный пакет?

Чтобы вынести зависимости из директории WEB-INF/lib в отдельный пакет при использовании Spring Boot 2.7 и Tomcat 9 со сборкой WAR, вам потребуется настроить ваш проект и сборку таким образом, чтобы все зависимости были упакованы в отдельный JAR файл.

Вот шаги, которые вы можете выполнить:

Шаг 1: Измените структуру проекта
Вам потребуется изменить структуру проекта, чтобы отдельная директория содержала ваши зависимости. Для этого создайте новую директорию в основной директории проекта (например, libs). В эту директорию вы будете помещать все ваши зависимости.

Шаг 2: Настройка Gradle или Maven (в зависимости от используемого сборщика проекта)

Gradle:
В вашем build.gradle, добавьте следующий код:

task copyDependencies(type: Copy) {
    from configurations.runtimeClasspath
    into 'libs'
}

bootJar {
    dependsOn copyDependencies
}

Этот код создаст новую задачу copyDependencies, которая будет копировать все зависимости в директорию libs. Затем, bootJar задача будет зависеть от copyDependencies, чтобы упаковать зависимости в собранный JAR файл.

Maven:
В вашем pom.xml, добавьте следующий код:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.1.1</version>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/libs</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Этот код настраивает плагин maven-dependency-plugin, чтобы копировать зависимости в директорию libs при сборке проекта.

Шаг 3: Пересоберите проект
Теперь, когда вы настроили ваш сборщик проекта, вам нужно пересобрать проект, чтобы все зависимости были помещены в отдельную директорию. В результате этого у вас должна появиться директория libs, содержащая все зависимости.

Шаг 4: Изменение настройки Tomcat
Чтобы Tomcat знал, где находятся ваши зависимости, вам потребуется настроить его.
В application.properties или application.yml добавьте следующую настройку:

application.properties:

tomcat.accesslog.directory=/path/to/your/project/libs

application.yml:

tomcat:
  accesslog:
    directory: /path/to/your/project/libs

Эта настройка указывает Tomcat'у на новое расположение директории с зависимостями.

Шаг 5: Запустите приложение
Теперь, когда все настройки готовы, вы можете запустить ваше приложение с помощью java -jar команды. Tomcat будет использовать новое расположение директории с зависимостями и ваше приложение должно успешно работать.

Вот так вы можете вынести зависимости из WEB-INF/lib в отдельный пакет при использовании Spring Boot 2.7 и Tomcat 9 со сборкой WAR.