a shared build service would handle replacing the ‘rootproject’ coupling, with properties populated from the root project and consumed (as conventions) by subprojects.
👍 1
g
grossws
04/30/2022, 7:59 PM
Thanks, that's a good idea to investigate. It could also work with aggregation with self-registration cases like test-report-aggregation.
c
Chris Lee
04/30/2022, 8:02 PM
true. it isn’t clear to me that subproject -> root project (what you already have) is actually a coupling problem - the root project is always evaluated. it’s use of allprojects, subprojects, or specifically coupling subprojects together that is problematic.
g
grossws
04/30/2022, 8:07 PM
yeah, I still have several cases where I had to use `subprojects`/`project(":path") { pluginManager.withPlugin(..) { .. } }` pattern to allow some kind of self-registration or adding dependencies (even if dependencies themselves use correct variants)
e
eric
04/30/2022, 8:40 PM
I just migrated our plugins to use a settings plugin instead of a root project plugin and it feels much more correct. If your shared extension is anything like ours, it is very much a settings thing.
g
grossws
04/30/2022, 8:53 PM
Unfortunately if I use settings plugin from private repo I have to either declare that repo in settings or move its declaration to init script which has its own issues in heterogenic environment with different private repos for different projects. And convention plugins still would need to access common configuration somewhere.