Единственный способ, которым я знаю, - это сделать общие и инструменты сборки одной и той же версией и использовать -DautoVersionSubmodules при выпуске: подготовить. Так как обычные агрегатные инструменты сборки, если оба модуля имеют одну и ту же версию SNAPSHOT, когда вы делаете релиз, плагин релиза выпустит и обновит их оба.
Редактировать: Чтобы сохранить правильную версию зависимости, ваш первый вариант должен работать. Общее:
<dependency>
<groupId>com.foo</groupId>
<artifactId>build-tools</artifactId>
<version>${project.version}</version>
</dependency>
Это сделает ваш общий проект всегда зависимым от инструментов сборки с той же версией, что и для самого себя. Если они всегда uprev в lock-step, это должно делать то, что вы хотите. Есть ли проблема с этим?