@ recampbell, у меня та же проблема. У нас есть несколько взаимосвязанных проектов в одном хранилище Hg.
Таким образом, мы точно знаем, под какой версией (номер версии hg) друг друга компилируют. Когда я говорю точно, я имею в виду, что могу убедиться, что это двоичный код.
Использование номеров релизов слишком грубое. Например, сегодня я обнаружил ошибку, которая воспроизводилась только в hg версии 3367, но не в hg версии 3368. Использование нескольких репозиториев hg было бы невоспроизводимым, так как в каждом из проектов каждый день было несколько коммитов, и поэтому невозможно точно определить, какая версия каждого отдельного проекта использовалась, только версия hg является правильной для использования (используя bisect, чтобы найти ошибку).
Оказалось, что мы изменили версию драйвера клиентской базы данных в одном из подпроектов, и это привело к сбою в нашей автоматической генерации даосов с помощью NPE. Драйвер, конечно, если версия выпуска, которую мы не пишем, мы просто используем ту, которая предоставлена поставщиком. Нам потребовалось бы несколько дней для его отладки, но, поскольку мы используем Jenkins для сборки каждый час, мы знали, что для поиска было от 10 до 20 коммитов, и только 3 или 4 коснулись даогенератора, так что это была простая задача.
Смешанные версии каждого проекта были бы проблемой в нижней части спины, так как у нас было бы несколько разных dao-generator-3.1.2.jar, которые немного отличались бы от других (если вы не ожидаете нам менять номера версий после каждого коммита, или если в Jenkins / maven / есть какая-то конфигурация, которая делает это автоматически? это было бы здорово ...).