← Назад к вопросам
Как исправить конфликт библиотек в Spring Boot
2.0 Middle🔥 61 комментариев
#JVM и управление памятью#Spring Boot и Spring Data
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Как исправить конфликт библиотек в Spring Boot
Конфликты зависимостей - частая проблема при разработке на Spring Boot. Вот проверенные способы их решения.
1. Анализ конфликта зависимостей
Перво-наперво нужно понять, что именно конфликтует:
mvn dependency:tree
mvn dependency:tree -Dverbose
./gradlew dependencies
2. Exclusion - исключение конфликтующей зависимости
В Maven pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
3. Определение версии явно
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>
4. Использование dependencyManagement
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>3.1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
5. Jackson конфликты
<properties>
<jackson.version>2.15.2</jackson.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson</groupId>
<artifactId>jackson-bom</artifactId>
<version>${jackson.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
6. SLF4J конфликты
Частая проблема - несколько реализаций логирования:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>
</dependency>
7. Проверка результата
После изменений всегда проверяйте:
mvn clean
mvn dependency:resolve
mvn spring-boot:run
8. Использование BOM (Bill of Materials)
dependencies {
implementation(platform('org.springframework.boot:spring-boot-dependencies:3.1.0'))
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}
9. Maven Enforcer Plugin для контроля
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>enforce-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<bannedDependencies>
<excludes>
<exclude>junit:junit</exclude>
</excludes>
<message>Use JUnit 5 instead</message>
</bannedDependencies>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Рекомендации
Всегда используйте dependencyManagement для централизованного управления версиями. Регулярно проверяйте дерево зависимостей через maven dependency:tree. Предпочитайте исключения конкретных артефактов вместо исключения по groupId. Обновляйте Spring Boot и его starter'ы регулярно - они содержат согласованные версии зависимостей. Используйте BOM для сторонних библиотек (Jackson, Spring Data и т.д.).