Some polishing of the build logic to locate the various JVMs used by the build. - Apply the `AvailableJavaInstallationsPlugin` to all projects, rather than the root project. - Add some modelling to the extension added by the plugin. - Make sure the plugins that expect the extension to be present to explicitly state this (by applying the plugin).
Rework the discovery and validation of the JVMs used for building, compiling and testing Gradle, so that the implementation is compatible with instant execution. In particular, model the `AvailableJavaInstallations` as a 'build service', in part to dogfood this API. Also remove some logic that is no longer required.