Код: Выделить всё
foo-parent
...
slf4j-api
2.0.0
maven-surefire-plugin
3.0.0-M5
Код: Выделить всё
foo-parent
foo-child
...
slf4j-api
2.0.16
maven-surefire-plugin
3.5.1
Я ожидал, что при сборке foo-child я буду использовать Surefire 3.5.1 и slf4j-api 2.0.16, как я и ожидал dependencyMangement и pluginManagement, чтобы повлиять на версии, которые я «транзитивно» унаследовал от foo-parent. Однако я обнаружил, что foo-child все еще использует Surefire 3.0.0-M5 и slf4j-api 2.0.0.
Означает ли это, что версии, определенные в родительских зависимостях/ на плагины не влияет DependencyManagement/pluginManagement, поскольку они не рассматриваются как «транзитивные» (или по другим причинам)?
Затем я делаю шаг вперед, явно объявляя зависимость/плагин в моем foo -child POM без упоминания версии, добавив:
Код: Выделить всё
...
slf4j-api
...
maven-surefire-plugin
Теперь foo-child будет иметь slf4j-api:2.0. 16 решено, но плагин Surefire по-прежнему имеет версию 3.0.0.
Как объяснить разницу в поведении между dependencyMangement и pluginManagement в этом случае?
Я использую Maven 3.9.6
Подробнее здесь: https://stackoverflow.com/questions/791 ... rom-parent