четверг, 8 декабря 2016 г.

Чем управляет dependencyManagement?

Секция управляет решением споров версий зависимостей, которые в проекте не явные, а подтянулись как зависимости зависимостей.

Dependency mediation очень часто не подходит как готовое решение зависимостей.

Dependency mediation - это механизм решения какую версию зависимости използьвать, если она непрямая, а находится в нескольких деревьях зависимостей прямых зависимостей. По этому механизму версия определяется той веткой, где зависимость находится ближе в иерархии.

Пример

Проект:
- Зависимость1
- Зависимость2

Зависимость1:
- Подзависимоть11 -> Подзависимоть111-> Общаязависимость(версия: 2)

Зависимость2:
- Подзависимоть21 -> Общаязависимость(версия: 1)


Значит в результате у нас в проекте окажется версия 1.


Иногда это совсем не подходит, и тогда и приходит на выручку секция:

<dependencyManagement<
....
</dependencyManagement>


В ней мы явно можем определить нашей общей зависимости необходимую версию. И вообще все версии вложенных и прямых зависимостей определить здесь.

Чудесная коцепция BOM ( bill of materials) - ведомость материалов. По которой мы в нашем проекте создаем артефакт типа pom, который содержит все версии артефактов, которые мы собираемся использовать по проекту(в разных его модулях). И такой артефакт мы указываем в в секции dependencyManagement под скоупом import(такой скоуп можно указывать только на артефакты pom). По сути BOM содержит только dependencyManagement секцию и не содержит секции dependencies - этот артефакт не приносит никаких реальных зависимостей, а только определяет версии для тех, которые мы будем подтягивать в наших модулях.




Комментариев нет:

Отправить комментарий