I have a large project (2+m LOC) with many sub-projects (50-60). I’d like to be able to version each of the sub-projects separately so that they can be published or released independently. Some of the projects depend on each other, e.g. libA
may be depended on by project1
and project2
.
I’m interested in whether there is a good way (via a plugin, perhaps) for manage the versioning the projects such that when a change is made to libA
that the version number for libA
, project1
, project2
and any other downstream project dependencies all have their respective version incremented.
If I apply the same version to all subprojects then even though there may be changes to only one project which is not depended on by any other project, when I publish the build artifacts then I need to publish an artifact for every project (i.e. 50-60).
I appreciate this is a bit of an open-ended question, but the approach we have now (using the axion-release-plugin and Git tags is too slow because of the size of the codebase and the number of projects), so I’m interested in any other approaches to versioning within multi-module Gradle projects that other teams may be using successfully. The one constraint I have is that I am not able to split up the monorepo into separate projects.