Предисловие:
Моя компания, как и большинство, имеет несколько сред выполнения и несколько версий выпуска, которые сами состоят из разных версий различных jar-файлов.
Например, давайте рассмотримверсии программного обеспечения X, версии 1.1, 1.2 и 1.3, которые могут быть развернуты на компьютере разработчика, тестировании или производстве.
Software-x-1.1 сам по себе состоит из jarA-0.9.1 и jarB-0.7.5, но software-x-1.3 состоит из jarA-1.7.31 и jarB-0.8.1.
В настоящее время мы используем SpringP PropertyPlaceholderConfigurer для настройки переменных времени выполнения (таких как учетные данные базы данных), однакосвойства также меняются в зависимости от версии выпуска.
Мы также используем Maven 2 POM версии 4, чтобы указать, какие версии нашего кода необходимо использовать.Мы помещаем номера версий наших jar-файлов как свойства в профили (dev, test, prod) внутри родительского pom, а затем ссылаемся на эти номера версий во всех poms проекта.
На данный момент у нас нет никакого способауказать, какие версии проекта относятся к данному выпуску, кроме самой последней.Кроме того, мы развертываем наши конфигурации во время выполнения для датчика SSDM, который затем настраивает и создает службы, определенные встроенными версиями нашего программного обеспечения.
-
Вопросы:
Есть лиКакие процедуры / инструменты мы можем использовать для создания нашего продукта, просто предоставив среду выполнения и номер версии?IE "build 1.1 dev"?
Можно ли в любом случае сохранить требуемые версии jar для каждой сборки выпуска?В настоящее время мы создаем версии всех файлов, включая родительский pom, но простое управление версиями родительского pom не записывает, какая версия выпуска имеет отношение к этому родительскому pom.
Что еще мы можем сделать для дальнейшей автоматизации процесса сборок?
Например, если бы мы могли управлять конфигурациями времени выполнения в родительском модуле, это было бы шагом в правильном направлении, но это выглядит как нарушение области действия.
Любой инструмент вненаша структура на данный момент немыслима, но не в далеком будущем.
Резюме:
Как мы можем максимально автоматизировать процесс сборки, не подвергаясь ошибкам?