I have to echo that it wasn’t ‘_the best’_ system and ended up doing some harm for all its good.
> You don’t need to thing about all the possible KMM libraries, its maven coordinates, you just update the compose plugin and you have everything available
Thats considered an exception and not the norm. Out of the box Gradle does not work this way and so you have fragmentation where part of your dependencies are coming from VC & the rest are coming from some bespoke system like this. If you have more of these in your build (for example spring dependency management) it starts becoming unwieldy.
I will always favor idiomatic APIs because they
simplify and move the ecosystem forward. Its way easier to reason about when there is only one way to do things.
“Hey where is this dependency coming from? Okay let me check the version catalog. Ah there it is!”
c’est finit!
I think that every build author should at a minimum consciously manage dependencies (via version catalogs) because its one of the most important parts of your build, you really shouldnt be outsourcing its management.
Also with those APIs you lose out on normal gradle APIs that are supported everywhere like version catalogs, you also lose out on improvements made to dependency declaration APIs for both build & plugin authors (viz
DependencyCollector
) and, lastly, the moment your use case requires you being in a different context, youre automatically stumped and need to fall back to version catalogs & now you have two sources of truth.