Моя организация рассматривает возможность использования Apache Ivy для управления зависимостями в многопроектной конфигурации. У нас есть основной проект (назовем его MAIN), в котором происходит большая часть разработки, и несколько проектов вспомогательных библиотек (назовем его LIBPROJ), которые мы храним в отдельных репозиториях. Что мы делаем прямо сейчас, так это собираем jar-файлы для проектов библиотек, когда они изменяются, и фиксируем их в основном проекте, но это большая головная боль и приводит к раздуванию проекта.
Похоже, что использование чего-то вроде плюща хорошо подходит. Мы предполагаем использовать наш сервер Jenkins для автоматического создания новой библиотеки JAR для LIBPROJ и публикации ее на ivy, а затем использовать версию «latest.integration» для автоматического добавления последней версии LIBPROJ в MAIN. Но если нам нужно разделить пополам, чтобы узнать, когда возникла проблема, как это может работать?
Единственный способ, который я могу придумать, сделать это прямо сейчас — изменить версию LIBPROJ, от которой мы зависим, в MAIN всякий раз, когда в LIBPROJ вносятся изменения, но это не намного лучше, чем проверка в самой банке.
Причина, по которой я беспокоюсь об этом, заключается в том, что в случае просмотра старых версий MAIN, если я просто проверю одну из них, ее невозможно будет собрать и запустить, потому что она запрашивает последнюю сборку, даже несмотря на ту версию, которую я м, на которые я смотрю прямо сейчас, может рассинхронизироваться на дни/недели/месяцы. Это сломает любые инструменты разделения пополам (например, в git или mercurial), чего я действительно не хочу делать.