Это решается двумя способами. Во-первых, POM для B должен включать для A. Пока A находится в хранилище, когда B создается, он получит правильную версию.
Чтобы убедиться, что A будет построен до B, реактор Maven должен знать об этой зависимости. Это сделано в многомодульной сборке с элементами. POM верхнего уровня установлен для pom и будет иметь два элемента , один для A и один для B. Не имеет значения, в каком порядке они перечислены или насколько они глубоки, если они достижимые из исходного проекта, они будут построены в правильном порядке.
Обратите внимание, что нет никакого способа попробовать построить B и заставить реактор Maven найти источник для A и проверить его. Реактору всегда нужен исходный проект, и оба A и B должны быть найдены по графику элементов. Это связано с тем, что сборка для B не может определить актуальность артефакта хранилища для A, она должна запустить сборку A и позволить ей выяснить это. И для того, чтобы они делали это одновременно, родительский проект, который включает оба, как описано здесь, должен быть исходным проектом, который будет собран.
Также обратите внимание, что, хотя Maven не медленнее, чем Ant для многомодульных проектов такого рода, импорт проекта Maven в IDE обычно приводит к гораздо более быстрым сборкам, чем Maven может выполнить сам.