Introduce a strategy to `WebApplicationType` to allow modules to
implement deduction logic.
Prior to this commit, modules played no part in deducing the
`WebApplicationType`. This meant that a user with `spring-webflux`
for client purposes would deduce `REACTIVE` despite no
`spring-boot-webflux` module being present.
The following deduction logic order is now implemented:
1) If the `spring-boot-webmvc` module is being used and Spring MVC
classes are found then `SERVLET` is used.
2) If the `spring-boot-webflux` module is being used and Spring WebFlux
classes are found then `REACTIVE` is used.
3) If `spring-web` is found and servlet classes are available then
`SERVLET` is used.
4) If none of the above are satisfied, `NONE` is used.
This commit also updates `SpringBootTestContextBootstrapper` to use
the same deduction logic.
Fixes gh-48517
Change `spring-boot-tomcat-runtime` and `spring-boot-jetty-runtime`
into starter POMs and reduce the number of dependencies needed for
`spring-boot-tomcat` and `spring-boot-jetty`.
The runtime starters provide only the jars required to run the
embedded server along with the module jar itself (excluding transitive
dependencies) and `spring-boot-webserver` (excluding transitive
dependencies).
The build setup required for an executable jar is slightly different
between Maven and Gradle. For Maven, the regular module is put in the
`provided` scope. For Gradle, the regular module remains in main
configuration and the runtime jar is put in the `providedRuntime`
configuration. The reference documentation has been updated to
show how to configure things if starters are being used.
Manual testing has been performed to ensure that wars build with Maven
and Gradle work with both Tomcat and Jetty in both deployed and
`java -jar` modes.
Closes gh-48175
Refine `buildSrc` so that `spring.mavenRepositories()` are considered
for all build types (not just milestones and snapshots). We now pass
"springFrameworkVersion" to `SpringRepositorySupport.groovy` so that
repo.spring.io doesn't get added for OSS builds using release artifacts.
Closes gh-46823
Update `DockerApi` and `Builder` to support export of images with a
specified platform. This prevents 'NotFound: content digest sha256:'
errors when building an amd64 image on an arm64 machine.
Fixes gh-46665
Update `DockerApi` so that the URL uses version `v1.50` whenever
possible. Prior to this commit, `v1.24` was often used which breaks
recent Docker installs due to the dropping of API version v1.43 and
below.
If the actual API version running is less than `v1.50`, but greater
than the minimum required for the API call, it will be used instead.
This hopefully means that older versions of Docker will continue to
work as they did previously.
Fixes gh-48050
Add a static cache to `SystemEnvironmentPropertyMapper` for property
source name to configuration property name conversion. This update
should help ease object allocations for system environment names which
are unlikely to change often.
Closes gh-14121
Update code and documentation to use the correct Paketo base image of
`ubuntu-noble-run` rather than `ubuntu-noble-run-base` which was
published only for testing purposes.
Closes gh-47966
Replace calls to the recently deprecated `setConnectionTimeout` method
of `HttpComponentsClientHttpRequestFactory` and align the HTTP client
builder with the HTTP async client builder.
This commit also introduces a `withConnectionConfigCustomizer` and
allows connection timeouts settings to be used.
Closes gh-47940
Update `OnlyOnceLoggingDenyMeterFilter` to directly implement the
maximum number of allowable tag values. With this change in place
we can remove calls to `MeterFilter.maximumAllowableTags`. This also
allows `MeterRegistryPostProcessor` to have a stronger signal about
the filters that it should also apply to the
`AutoConfiguredCompositeMeterRegistry` since it can now do a standard
`instanceof` check.
Fixes gh-47285
Update `@AutoConfigureMockMvc` to move HtmlUnit configuration under
a dedicated attribute and provide support for configuring the URL
that is used.
Closes gh-47857