Ответ
Да, возможны. Стартер — это набор зависимостей (транзитивных в том числе). Если две библиотеки внутри стартера или стартер и ваша явная зависимость требуют разных несовместимых версий одной библиотеки, возникает конфликт.
Как Maven/Gradle разрешают конфликт: Системы сборки используют стратегию «ближайший выигрывает» (Maven) или «самая высокая версия» (по умолчанию в Gradle). Это может привести к неявному выбору версии.
Пример и диагностика:
<!-- В pom.xml -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <!-- Неявно тянет, например, jackson-databind 2.15.0 -->
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.0</version> <!-- Конфликт версий! -->
</dependency>
Как управлять версиями:
- Анализ:
mvn dependency:treeилиgradle dependencies. - Управление через BOM: Spring Boot
spring-boot-dependenciesуправляет версиями за вас. - Явное указание: В Maven — секция
<dependencyManagement>; в Gradle —resolutionStrategyили принудительное задание версии (force).