Перед разрешением зависимостей родительский и дочерний POM сначала объединяются в «эффективный POM». Вы можете отобразить эффективную POM, используя mvn
help:effective-pom
. Следовательно, ваше дерево зависимостей становится:
(Effective POM) -> A:1.0
(Effective POM) -> B -> A:1.1
Эффект такой же, как если бы вы объявили зависимость A: 1.0 в дочернем POM. Поскольку зависимости ближе к root «win» в Maven, используется A: 1.0.
Кроме того, если родительский и дочерний POM объявляют зависимость для одного и того же модуля, версия, указанная дочерним, переопределяет тот, который указан родителем (= становится версией в действующем POM).