How to increment versions of dependent projects in multi-project build?

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.