An `imagePlatform` option for the Maven and Gradle image-building
goal/task can be used to specify the os/architecture of any
builder, run, and buildpack images that are pulled during image
building.
Closes gh-40944
This commit updates the Maven Plugin to tolerate projects that are using
the module path on the JVM and targeting native images with AOT.
Previously, the plugin compiled AOT sources directly to target/classes
and the presence of a module-info there is enough to trigger a
compilation on the module path.
With this change we now compile in a separate directory that contains
the generated AOT classes (typically CGLIB proxies). These are copied to
target/classes once compilation completes already.
The integration test also uses our parent, rather than relying on what
Maven provides. That's because older Maven versions provide a default
compiler plugin version that did not handle the module path correctly.
Closes gh-33383
This commit ensures that Health probes are automatically enabled when
the application runs on Cloud Foundry. This was already the case for
Kubernetes, but now that Cloud Foundry supports this feature we should
do the same.
Closes gh-39804
Prior to this commit, Spring applications and libraries would call
`Schedulers.boundedElastic()` or similar static methods at runtime. This
would ininitialize and cache reactive schedulers for the Reactor core
library. Those instances are cached for the lifetime of the JVM and are
shared static instances.
In a WAR deployment case, those schedulers would be initialized and
tied to the web application servlet context class loader. When
undeploying the web applications, schedulers would not be automatically
shut down and this would keep the now useless application classloader,
leaking resources.
This commit ensures that Spring Boot shuts down shared schedulers if
they were loaded and initiazed by the web application classloader, once
the the Spring application context is closed.
Closes gh-41548