← Назад к вопросам

Как исправить конфликт библиотек в 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 и т.д.).