Если ваш модуль использует API-интерфейсы из B, лучше явно добавить его в pom, хотя это не является строго обязательным. Если вы обновите A, вполне возможно, что он больше не использует B, и тогда вы получите сбой сборки без каких-либо изменений в коде вашего модуля.
Что касается версий, вы должны управлять теми, у кого dependencyManagement в родительском помпе. Затем вы можете пропустить версию для управляемых зависимостей в дочерних poms. Версия в dependencyManagement
переопределяет версию в транзитивных зависимостях, гарантируя, что вы везде используете одну и ту же версию.
Если все модули находятся в одном проекте, они также должны иметь одинаковую версию проекта. Как правило, это будет версия снимка, например, 1-SNAPSHOT
Каждый модуль будет использовать что-то вроде:
<project>
<artifactId>A</artifactId>
<version>1-SNAPSHOT</version>
И ссылаться на A и B следующим образом в других модулях:
<dependency>
<groupId>com.yourcompany</groupId>
<artifactId>A</artifactId>
<version>${project.version}</version>
</dependency>
Чтобы установить версию, отличную от SNAPSHOT, перед созданием выпуска, вы можете, например, использовать версии плагина maven-dependency-plugin: set goal.