[Gradle] Support independent versioning and conditional publishing
Is your feature request related to a problem? Please describe.
- In a monorepo, some modules may require a different versioning strategy if tightly coupled to different dependencies (i.e. compiler plugins are tied to compiler versions while runtime modules are independent)
- In a sufficiently large monorepo, publishing each module each time, even when not changed can introduce a lot of noise (especially when considering irrelevant renovate PRs)
Describe the solution you'd like
As an opt-in feature, Gradle modules can be versioned independently and conditionally released only when the code changes. This would have to model a bit of how NPM-lerna repos work with module specific changelogs and independent versioning.
Describe alternatives you've considered
Could be easily supported by breaking out into separate repos, but that isn't always ideal.
Part of what is interesting here is the fact that the NPM plugin already supports this with lerna. It'd be interesting to try to build this out in such a way that this is supported out-of-the-box with Auto and hooked into each plugin natively.
If you implemented this @sugarmanz you would be the 🐐
Related https://github.com/intuit/auto/issues/917#issuecomment-579079679
This would probably require a breaking change though since we'd have to rely on the git graph for more things