Looking for ideas to remove some unpleasant coupling between projects

A long time ago someone at the company had the bright idea of using an init file for all common set up and tasks. After a couple of years this has become an unmanageable mess and legacy issues mean we can’t upgrade gradle beyond version 3. I’d like to get rid of this file but don’t know how to do it when over 30 projects depend on it and it has all the common set up information. Does anyone know of a strategy that could be used here that would allow me to iteratively upgrade the projects without causing problems for everyone?

What aspect of the current solution is unmanageable? I’d guess that you still want to preserve some type of shared/common build logic. Do you have a vision for how you would like it to differ from the existing shared build logic?

Its a single complex file that couples all our projects together. It has made it difficult to update dependencies for example. I was thinking of maybe creating a plugin instead. Can we somehow tell gradle to ignore the init.gradle file? Can we create common set up logic in a plugin?