Why I wrote a plugin for Maven

image

It all started when I changed jobs and immediately got on a big project. Big for me are several vendors, a dozen systems, a 5-step release cycle, 1000+ engineers in different locations. Sources "lived" in several svn repositories with a large number of maven modules, each of which could be used in one or several systems. Each module was connected to the main system through a binary dependency. At the end of the release cycle, it was necessary to release new versions of modules and systems assembled on their basis. Under the cut, I will describe the problem of the effectiveness of this process, which I tried to fight against - and what came of it.

By the way, I found a very suitable article about the main kitchen of versioning modules and releasing a release, for which I am very grateful to the author. I highly recommend that you familiarize yourself in advance, as this will help to understand the problem that I am describing, but I really do not like to “copy-paste”, which I do not advise you.

An example of how everything worked on our project:

  • There are modules A, B, C and 2 systems X, Y;
  • X is assembled from A (version 1.0.0), B (1.1.0);
  • Y Collected from B (1.8.0), C (1.0.0);
  • Module B may depend, for example, on A;
  • Dependencies are registered in the root of pom.xmleach of the systems as binary (see below);
  • At the end of the development cycle it is necessary: ​​release the release of the changed modules and new versions of X and Y (increase the version).


BB1.1.0


Problem

  • There are people responsible for the release of each system. Accordingly, they were forced at the end of each release cycle (1 month) to search for all changes for all modules, new versions of which were to be included in the release and after that release new releases of the changed modules and in the correct sequence (see paragraph 4 of the example), update секцию корневого pom.xml своей системы ссылками на свеженькие версии выпущенных модулей;
    There are really a lot of modules, some have changed, some have not;
    There are also many engineers, and it is usually possible to find out whether changes to a single module in the X and Y system are only possible with the help of the person who made these changes and his boss.

Also popular now: