Существует несколько возможных решений вашей проблемы, наиболее распространенными из которых являются:
1) Вы можете объединить несколько проектов, если они все равно должны построить и сформировать дерево зависимостей, в согласованный набор модулей. Это использует Maven
<modules>
<module>submodule-A</module>
<module>submodule-B</module>
</modules>
формат, который является кратким, и это полезно при группировании проектов, которые должны быть все версионированы как группа. Тогда вам просто нужен скрипт, который обновляет номера версий всех дочерних файлов pom.xml до правильной ревизии всякий раз, когда вы делаете релиз (или, мой гораздо менее предпочтительный вариант, используйте maven-release-plugin). Таким образом, каждая часть проекта перемещается и объединяется в одно целое; затем вы можете начать добавление реальных номеров редакций (т. е. 1.3.2).
2) Если вы не можете объединить общие подпроекты в согласованное решение с модулями, следующим лучшим вариантом будет использование SNAPSHOTS. Установив версию в проекте зависимостей что-то вроде:
<project>
...
<artifactId>dependency-A</artifactId>
<groupId>com.company</groupId>
<version>1.3.2-SNAPSHOT</version>
...
</project>
Вы получаете возможность перемещаться в отдельных кодах одновременно. Ваш основной проект может отслеживать изменения в библиотеке, напрямую завися от снимка:
<dependencies>
...
<dependency>
<artifactId>dependency-A</artifactId>
<groupId>com.company</groupId>
<version>1.3.2-SNAPSHOT</version>
</dependency>
...
</dependencies>
или вы можете рассчитывать на более старую версию, чтобы продолжить текущий цикл разработки (т. Е. С использованием 1.3.1), а затем обновить зависимость после выпуска версии 1.3.2.
Эта опция немного сложнее при отслеживании нескольких независимых проектов, но она сохраняет ясность того, что зависит от какой версии, явно в источнике. Это недостаток по сравнению с версиями модулей вместе. С другой стороны, в большинстве систем CI (включая Hudson) в конце раздела конфигурации есть флажок для задания, которое запрашивает «Построить зависимые проекты?» (или что-то типа того). При проверке и запуске в виде сборки maven, когда ваша зависимость SNAPSHOT-A выполняет перестройку, Hudson может автоматически запустить сборку любого проекта, который зависит от зависимости-A. Это может быть очень удобно, если у вас есть общая постоянно обновляемая зависимость.