Короткий ответ на ваш вопрос заключается в том, что вы должны включать «предоставленные» зависимости только локально, если код требует его компиляции, но не в родительском pom.xml или других структурах.Указывать, что у вас есть «обеспеченная» зависимость в глобальном pom.xml, не имеет смысла для maven, потому что он не нуждается в ее компиляции в таком pom.xml.
Вот длинный ответ:
Когда я начал использовать Maven, у меня была та же идея попытаться сгруппировать артефакты и зависимости в модули pom.xml, надеясь, что они будут полезны в будущем.Теперь, когда у меня есть немного больше опыта, я понял, что это пустая трата времени.Для меня это была форма чрезмерного проектирования.
Я научился разбивать свои большие проекты на отдельные модули, каждый в своем собственном хранилище Subversion.Я включаю зависимости по мере необходимости для каждого локального модуля в их pom.xml.Я выпускаю версионные теги каждого модуля по мере написания кода и по мере необходимости (т. Е. При тестировании и стабильности).
Я строю свои большие проекты, создав отдельный проект maven с собственным pom.xml, и импортирую свои модуликак зависимости.Время от времени я обновляю версию модуля в зависимости, когда я сделал релиз.Затем я позволю maven выполнять работу по вытягиванию всего, что нужно, транзитивно или нет, при компиляции / выпуске большого проекта.
Maven допускает всевозможные сложные конструкции и иерархию между pom.xmls, но IMHOэта функция создает ненужный беспорядок и сложности.Пока что это не принесло мне никакой пользы.Вначале я надеялся, что при компиляции одного файла pom.xml все остальные будут компилироваться должным образом каскадным способом.Я получил некоторый результат, но какой беспорядок нужно поддерживать во всех глобальных pom.xml.
Отдельное высвобождение артефактов моего модуля и построение моего проекта на этих выпусках сэкономило мне столько времени, что я могу только рекомендовать его,В целом, у меня меньше pom.xml для поддержки, и они также менее сложны.Для того же конечного результата ...
Итак, если ваша единственная причина для создания глобального / структурного pom.xml - это надежда сэкономить время, я рекомендую отказаться от этой идеи ... Отдельный код в отдельных проектах, выпуски ТОГДА компилируется глобально.