The GitHub Actions job "Coverage" on grails-core.git/fix/bom-cli-afterEvaluate-ordering has failed. Run started by GitHub user codeconsole (triggered by codeconsole).
Head commit for run: 7f5c8675bbe65b3aebe9bcf6d2472aeef505c703 / Scott Murphy Heiberg <[email protected]> Fix afterEvaluate race between applyGrailsBom and GrailsCliGradlePlugin applyGrailsBom() applied BomPropertyOverridesPlugin from inside its own afterEvaluate callback. Because BomPropertyOverridesPlugin.apply() itself registers a second, nested project.afterEvaluate{} for the actual override-application logic, and Gradle appends newly-registered afterEvaluate listeners to the end of the notification queue currently being processed, that nested registration ended up running after every afterEvaluate callback other plugins had registered synchronously during apply() - including GrailsCliGradlePlugin's configureApplicationCommands, which eagerly resolves the api/implementation/runtimeOnly buckets via the grailsCliDetect probe and locks them against further mutation. In multi-project builds this surfaces as: Cannot mutate the dependencies of configuration ':foo:api' after the configuration's child configuration ':foo:grailsCliDetect' was resolved. After a configuration has been observed, it should not be modified. triggered whenever resolving one project's grailsCliDetect forces a dependency project to fully configure mid-resolution, landing inside the window between the CLI probe locking its buckets and the re-queued BOM override callback trying to mutate them. Fix: apply BomPropertyOverridesPlugin's extension eagerly and call applyOverrides() directly from the existing (correctly-ordered) afterEvaluate callback in applyGrailsBom, right after the platform is injected, instead of re-deferring through project.plugins.apply(). Report URL: https://github.com/apache/grails-core/actions/runs/29669282440 With regards, GitHub Actions via GitBox
