Spring Framework 7.0 requires a Servlet 6.1 baseline for Servlet containers.
Partial Servlet 6.1 support is available on the `main` Undertow branch,
but there isn't any milestone version available for the undertow 2.4
generation. At this stage of our 4.0 schedule, we think it's safer to drop
Undertow support now.
Closes: gh-46917
Restore the `spring-boot-autoconfigure-classic` module, but add
a starter and an extra `spring-boot-autoconfigure-classic-modules`
POM in order to push the exclusions further away.
This should allow `spring-boot-starter-classic` to be combined
with other starters and hopefully have the expected dependencies
resolved.
See gh-46233
transitive = false maps to a wildcard exclusion in the published pom.
Unfortunately, this causes problems with Maven as any dependency
on one of the transitive = false modules then has all of its
dependencies excluded, even when it appears elsewhere in the
dependency graph without any exclusions.
Gradle is not affected as it requires an exclusion to be declared
on every route to a dependency for it to be effective. Maven is
affected as it requires the exclusion to be present on only one
route.
Build and Deploy Snapshot / Build and Deploy Snapshot (push) Has been cancelledDetails
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:24], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Has been cancelledDetails
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:24], map[id:windows-latest name:Windows]) (push) Has been cancelledDetails
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:17], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Has been cancelledDetails
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:17], map[id:windows-latest name:Windows]) (push) Has been cancelledDetails
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:21], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Has been cancelledDetails
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:21], map[id:windows-latest name:Windows]) (push) Has been cancelledDetails
Run CodeQL Analysis / run-analysis (push) Has been cancelledDetails
Run System Tests / Java ${{ matrix.java.version}} (map[toolchain:false version:17]) (push) Has been cancelledDetails
Run System Tests / Java ${{ matrix.java.version}} (map[toolchain:true version:21]) (push) Has been cancelledDetails
Build and Deploy Snapshot / Trigger Docs Build (push) Has been cancelledDetails
Build and Deploy Snapshot / Verify (push) Has been cancelledDetails
108ca649 trimmed down the dependencies of spring-boot-starter-test
but it went too far. Marking spring-boot-webclient as non-transitive
meant that spring-boot-http-codec was no longer on the classpath.
However, it's a required dependency of the spring-boot-webclient
auto-configuration due to an auto-configuration after reference to
CodecsAutoConfiguration.class.
This commit adds spring-boot-http-codec as a direct non-transitive
dependency. This should be sufficient to allow
spring-boot-webclient's auto-configuration to function while still
minimizing the effects of adding spring-boot-starter-test to an app.
See gh-4629
efde264 corrected spring-boot-webclient by adding to it an api
dependency on spring-webflux. This had an unwanted side-effect on
the classpath of anything that depends on spring-boot-starter-test.
That classpath now contained all of the classes that are needed to
deduce that the web application type should be reactive. This
caused some smoke tests to fail as they'd incorrectly try to start
a reactive web server.
This commit updates spring-boot-starter-test so that its dependencies
on spring-boot-restclient and spring-boot-webclient are not
transitive. This prevents them from pulling in unwanted dependencies
such as spring-webflux by default, while making their classes and
auto-configuration available for classes that already depend on
spring-webflux and the like through some other route.
See gh-46292