Pull to refresh

Почему я плагин для Maven писал

Reading time2 min
Views7K
image

Все началась, когда я поменял работу и сходу попал на большой проект. Большой для меня это несколько вендоров, десяток систем, 5-ти ступенчатый релизный цикл, 1000+ инженеров в разных локациях. Исходники «жили» в нескольких svn репозиториях с большим количеством maven модулей, каждый из которых мог использоваться в одной или нескольких системах. Каждый модуль был подключен в основную систему через бинарную зависимость. В конце релизного цикла необходимо было выпустить новые версии модулей и собранных на их основе систем. Под катом я опишу проблему эффективности этого процесса, с которой я попытался побороться — и что из этого вышло.

Кстати, по поводу основной кухни версионирования модулей и выпуска релиза нашел очень подходящую статью, за что очень благодарен автору. Крайне рекомендую предварительно ознакомиться, так как это поможет понять проблему, которую я описываю, а я очень не люблю «копипастить», чего и вам не советую.

Пример, как все работало на нашем проекте:

  • Есть модули A, B, C и 2 системы X, Y;
  • X собирается из A (версия 1.0.0), B (1.1.0);
  • Y Собирается из B (1.8.0), C(1.0.0);
  • Модуль B может зависеть, например, от А;
  • Зависимости прописаны в корневых pom.xml каждой из систем, как бинарные (смотрите ниже);
  • В конце цикла разработки необходимо: выпустить релиз изменившихся модулей и новые версии X и Y (увеличить версию).


	<dependencies>
	      <dependency>
	        <groupId>B</groupId>
	        <artifactId>B</artifactId>
	        <version>1.1.0</version>
	      </dependency>


Проблема

  • Есть люди, ответственные за релиз каждой системы. Соответственно, они были вынуждены в конце каждого релизного цикла (1 месяц) искать все изменения по всем модулям, новые версии которых должны были войти в релиз и после этого выпускать новые релизы изменившихся модулей и в правильной последовательности (см п.4 примера), обновить секцию корневого pom.xml своей системы ссылками на свеженькие версии выпущенных модулей;
    Модулей действительно много, некоторые менялись, некоторые – нет;
    Инженеров тоже много и узнать, нужны ли изменения отдельно взятого модуля в системе X и Y обычно можно только с помощью человека, который делал эти изменения, и его начальника.
Tags:
Hubs:
+14
Comments9

Articles

Change theme settings