Согласно документации Maven :
[Maven] будет использовать версию ближайшей к вашему проекту зависимости в дереве зависимостей.
и
если две версии зависимостей находятся в одной и той же глубине в дереве зависимостей, до Maven 2.0.8 не было определено, какой из них победит, но начиная с Maven 2.0.9 учитывается порядок в объявлении: первое объявление выигрывает .
Итак, ответ на ваш вопрос - потому что вы определили зависимость vaadin-client-compiler
до зависимости testB
, а зависимость от commons-lang3
в дереве такой же глубины, как у testA
.
Если вы измените порядок своих зависимостей в testA
, вы увидите, что теперь он вытягивает версию 3.4 commons-lang3
версии 3.4 (при условии, что вы используете версию Maven 2.0.9 или новее)