Ответ
Транзитивность зависимостей — это механизм в Maven (и других системах сборки), при котором зависимости ваших зависимостей автоматически включаются в classpath вашего проекта.
Как это работает:
Если ваш проект A зависит от библиотеки B, а B зависит от библиотеки C, то Maven автоматически добавит C как зависимость для A. Это избавляет от необходимости вручную объявлять все вложенные зависимости.
Пример pom.xml:
<!-- Проект A явно объявляет только зависимость B -->
<dependency>
<groupId>com.example</groupId>
<artifactId>B</artifactId>
<version>1.0</version>
</dependency>
<!-- Maven автоматически добавит все зависимости библиотеки B (например, C) -->
Проблемы и управление:
- Конфликт версий: Если две транзитивные зависимости требуют разные версии одной библиотеки, Maven выбирает одну по правилам разрешения конфликтов (ближайшая в дереве зависимостей).
- Исключение зависимости: Нежелательную транзитивную зависимость можно исключить.
<dependency> <groupId>com.example</groupId> <artifactId>B</artifactId> <version>1.0</version> <exclusions> <exclusion> <groupId>unwanted.group</groupId> <artifactId>unwanted-artifact</artifactId> </exclusion> </exclusions> </dependency> - Управление версиями: Для централизованного контроля версий транзитивных зависимостей используется секция
<dependencyManagement>.