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 the modules and systems assembled on their basis. Under the cut, I will describe the problem of the effectiveness of this process, with which I tried to fight - and what came of it. By the way, regarding the basic kitchen of the versioning of modules and the release of the release I found a very suitable article , for which I am very grateful to the author. I highly recommend a preliminary review, as this will help to understand the problem I am describing, and I really don’t like to copy-paste, which I don’t recommend.
An example of how everything worked on our project: ')
There are modules A, B, C and 2 systems X, Y;
X is built from A (version 1.0.0), B (1.1.0);
Y Compiled from B (1.8.0), C (1.0.0);
Module B may depend, for example, on A;
Dependencies are written in the root pom.xml each of the systems as binary (see below);
At the end of the development cycle, you need to: release a release of changed modules and new versions of X and Y (increase version).
There are people responsible for the release of each system. Accordingly, they were forced at the end of each release cycle (1 month) to look for all changes in all modules, new versions of which should have been included in the release and after that release new releases of changed modules and in the correct sequence (see step 4 of the example), update pom.xml ; There are really a lot of modules, some have changed, some are not; There are also a lot of engineers, and it is usually possible to find out whether changes to a single module in the X and Y system are necessary only with the help of the person who made these changes and his boss.