Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: gradle, dependency, resolution

Как Gradle разрешает конфликт транзитивных зависимостей и как зафиксировать нужную версию зависимости?

Вопрос проверяет понимание dependency resolution в Gradle и умение контролировать версии библиотек.

Короткий ответ

Gradle по умолчанию выбирает самую новую версию зависимости. Это называется стратегией «newest wins». При необходимости версию можно зафиксировать явно. Также существуют механизмы dependency constraints и resolutionStrategy. Они позволяют управлять конфликтами осознанно.

Длинный ответ

Управление зависимостями — одна из сильных сторон Gradle.

Определение

Dependency resolution — процесс выбора конкретных версий библиотек при наличии конфликтов транзитивных зависимостей.

Как Gradle решает конфликт по умолчанию

Если разные зависимости требуют разные версии одной библиотеки:

  1. Gradle анализирует граф зависимостей

  2. Выбирает самую новую версию

  3. Использует её для всех зависимостей

Как зафиксировать нужную версию

Существует несколько способов.

1. Явное указание версии

implementation("org.slf4j:slf4j-api:1.7.36")

2. Dependency constraints

dependencies {
    constraints {
        implementation("org.slf4j:slf4j-api:1.7.36")
    }
}

3. Resolution strategy

configurations.all {
    resolutionStrategy {
        force("org.slf4j:slf4j-api:1.7.36")
    }
}

4. Version catalog

Используется в больших проектах для централизованного управления версиями.

Вывод

Gradle по умолчанию выбирает новые версии, но предоставляет мощные инструменты для строгого контроля зависимостей. Их стоит использовать в крупных и долгоживущих проектах.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • Java

    Java

Ключевые слова

#gradle

#dependency

#resolution

Подпишись на Java Developer в телеграм