Ответ 1
Запуск mvn dependency:tree
в примере проекта, размещенного в указанной выше ссылке на ошибку,
[INFO] Building MEAR-143 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.3:tree (default-cli) @ mear-143 ---
[INFO] ljnelson:mear-143:pom:1.0-SNAPSHOT
[INFO] \- junit:junit:jar:4.8.2:test
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building MEAR-143 Leaf 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.3:tree (default-cli) @ mear-143-leaf ---
[INFO] ljnelson:mear-143-leaf:jar:1.0-SNAPSHOT
[INFO] \- junit:junit:jar:4.8.2:test
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building MEAR-143 Middle 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.3:tree (default-cli) @ mear-143-middle ---
[INFO] ljnelson:mear-143-middle:jar:1.0-SNAPSHOT
[INFO] +- ljnelson:mear-143-leaf:jar:1.0-SNAPSHOT:runtime
[INFO] \- junit:junit:jar:4.8.2:test
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building MEAR-143 EAR 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.3:tree (default-cli) @ mear-143-ear ---
[INFO] ljnelson:mear-143-ear:ear:1.0-SNAPSHOT
[INFO] +- ljnelson:mear-143-middle:jar:1.0-SNAPSHOT:runtime
[INFO] | \- ljnelson:mear-143-leaf:jar:1.0-SNAPSHOT:test (scope managed from ru
ntime)
[INFO] \- junit:junit:jar:4.8.2:test
Зависимость scope
из mear-143-leaf
в mear-143-middle
, где зависимость явно определена, действительно во runtime
, отменяя test
объем, определенный в dependencyManagement
секции родительского П, mear-143
.
В mear-143-ear
, mear-143-leaf
включается транзитивно. Здесь test
область, определенная в dependencyManagement
mear-143
имеет приоритет над унаследованной областью runtime
.
Это, я думаю, соответствует тому, что указано во втором пункте в разделе, который вы упомянули выше. Цитируя это здесь и выделив жирным шрифтом и курсивом соответствующие части:
b определено в разделе родительского управления зависимостями B, и поскольку управление зависимостями имеет приоритет над посредничеством зависимостей для транзитивных зависимостей, будет выбрана версия 1.0, если на нее будут ссылаться в или c pom. b также будет иметь область компиляции