Как явно задать версию библиотеки CGLIB в проекте?

«Как явно задать версию библиотеки CGLIB в проекте?» — вопрос из категории Spring, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Чтобы явно указать конкретную версию CGLIB и переопределить транзитивную зависимость, необходимо объявить ее в менеджере зависимостей.

Для Maven (pom.xml): Добавьте зависимость с нужным version в раздел <dependencies>.

<dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib</artifactId>
    <version>3.3.0</version> <!-- Явное указание версии -->
</dependency>

Для Gradle (build.gradle): Укажите версию в блоке dependencies.

dependencies {
    implementation 'cglib:cglib:3.3.0'
}

Если возникает конфликт версий: CGLIB часто подключается как зависимость других библиотек (например, Spring Core). Чтобы исключить старую версию и использовать свою:

  • В Maven: Используйте тег <exclusions> внутри проблемной зависимости.
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.3.23</version>
        <exclusions>
            <exclusion>
                <groupId>cglib</groupId>
                <artifactId>cglib</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
  • В Gradle: Используйте exclude.
    implementation('org.springframework:spring-core:5.3.23') {
        exclude group: 'cglib', module: 'cglib'
    }

    Почему это важно: Разные версии CGLIB могут быть несовместимы. Явное указание версии обеспечивает предсказуемость сборки и предотвращает ошибки, связанные с байткод-генерацией.