Previously, Spring Boot's modules published Gradle Module Metadata
(GMM) the declared a platform dependency on spring-boot-dependencies.
This provided versions for each module's own dependencies but also had
they unwanted side-effect of pulling in spring-boot-dependencies
constraints which would influence the version of other dependencies
declared in the same configuration. This was undesirable as users
should be able to opt in to this level of dependency management, either
by using the dependency management plugin or by using Gradle's built-in
support via a platform dependency on spring-boot-dependencies.
This commit reworks how Spring Boot's build uses
spring-boot-dependencies and spring-boot-parent to provide its own
dependency management. Configurations that aren't seen by consumers are
configured to extend a dependencyManagement configuration that has an
enforced platform dependency on spring-boot-parent. This enforces
spring-boot-parent's version constraints on Spring Boot's build without
making them visible to consumers. To ensure that the versions that
Spring Boot has been built against are visible to consumers, the
Maven publication that produces pom files and GMM for the published
modules is configured to use the resolved versions from the module's
runtime classpath.
Fixes gh-21911
This commit adds auto-configuration support for Spring Data R2DBC. If a
`ConnectionFactory` and Spring Data are available, scanning of reactive
repositories is enabled.
This commit also adds a starter to bring R2DBC and the necessary Spring
Data libraries.
See gh-19988
Co-authored-by: Mark Paluch <mpaluch@pivotal.io>
Co-authored-by: Oliver Drotbohm <odrotbohm@pivotal.io>
Update all dependencies declarations to use the form `scope(reference)`
rather than `scope reference`.
Prior to this commit we declared dependencies without parentheses unless
we were forced to add them due to an `exclude`.
Replace Gradle single quote strings with the double quote form
whenever possible. The change helps to being consistency to the
dependencies section where mostly single quotes were used, but
occasionally double quotes were required due to `${}` references.
The Spring Cloud Connectors project has been deprecated in favor of the
Java CFEnv project. The Boot auto-configuration and starter that support
Connectors were deprecated in Boot 2.2.
This commit removes the Connectors auto-configuration, starter,
and dependency management.
Closes gh-19798
This paves the way for publishing Gradle module metadata once the
problem caused by snapshot versions and our two-step publication
process has been addressed.
See gh-19609
This reverts commit b34a311d02 as,
having disabled the publishing of Gradle's module metadata (4f75ab5),
the changes are no longer needed.
See gh-19609
Previously, enforcedPlatform dependencies were using to pull in the
constraints defined in spring-boot-dependencies and
spring-boot-parent and applied them strictly so that the constrained
version had to be used. This worked as intended in Spring Boot's own
build but incorrectly enforced those same strict version requirements
on external consumers of Spring Boot's modules.
This commit reworks how Spring Boot defines its internal dependency
management so that platform dependencies are exposed to external
consumers while enforced platform dependencies are using internally.
See gh-19609
The Elasticsearch transport client has been deprecated since Spring Boot
2.2.0 and is about to be removed from Spring Data Elasticsearch and
Elasticsearch itself in their next major releases.
The available REST client support variants are now the preferred way of
using Elasticsearch features.
Closes gh-19668
This commit removes the validation starter from the web and
webflux starters - we've reconsidered that choice since many were
not using this feature as part of their default web experience.
Thit commit also changes the default EL implementation for the
Jakarta implementation, aligning all servers on it and simplifying
dependency management (especially exclusions that were required
previously).
Closes gh-19550
Previously, Maven's default behaviour was relied up which resulted
in the artifact ID being appended to each URL as it was inherited.
This behaviour can only be disabled in Maven 3.6 and later, a version
that we cannot use due to an incompatibility with the Flatten Plugin.
This commit works around Maven's default behaviour by defining
properties for the SCM URL, connection, and developer connection and
then explicitly defining the settings in each pom using these
properties. The explicit definition of the properties in each pom
prevents them being inherited from the parent, thereby disabling the
unwanted appending of the artifact ID to the URL.
Fixes gh-18328
This commit also removes the workaround that required to exclude junit 4
explicitly now that a related issue in JUnit Jupiter has been fixed.
Closes gh-17266
This commit auto-configures CBOR (see https://cbor.io/) codecs in the
RSocketStrategies, using Jackson binary format support.
The required dependency is added to the rsocket starter. Binary codecs
are well suited for RSocket payloads, so this codec is added first to
the list of codecs (before the JSON one already supported).
Closes gh-16830
Previously, the WebFlux starter declared direct dependencies on Hibernate Validator
and the Jakarta EE validation API. This meant that it required two exclusions to
exclude validation from a reactive web application that did not need it.
This commit updates the WebFlux starter to get its validation dependencies via a
dependency on the validation starter. This allows validation to be excluded
using a single exclusion. The EL dependency from the validation starter has
been excluded to allow the EL implementation from the underlying container
starter to continue to be used instead.
See gh-16593
This commit adds support for RSocket server applications.
The auto-configuration will either add RSocket support to an existing
Reactor Netty server in a WebFlux application (as a WebSocket endpoint),
or bootstrap a brand new RSocket server instance.
Spring Boot will also auto-configure the Spring Messaging infrastructure
that supports Controller beans with `@MessageMapping` annotated methods.
Fixes gh-16021
Previously, the web starter declared direct dependencies on Hibernate Validator
and the Jakarta EE validation API. This meant that it required two exclusions to
exclude validation from a web application that did not need it.
This commit updates the web starter to get its validation dependencies via a
dependency on the validation starter. This allows validation to be excluded
using a single exclusion. The EL dependency from the validation starter has
been excluded to allow the EL implementation from the underlying container
starter (Tomcat, Jetty, or Undertow) to continue to be used instead.
Closes gh-16176
In 2.3.1, the JAX-B API now depends on javax.activation-api. This has
caused duplicate Activation classes to appear in the starter due to
dependencies on both javax.activation:activation:1.1 and on
javax.activation:javax.activation-api:1.2. This commit removes the
duplicate classes by excluding the former in favour of the latter.
See gh-14754
This commit reworks 40d8726 as it has introduced an unfortunate side
effect for those who are using a starter with optional starter
dependencies.
`spring-boot-starter-web` defines the json and the tomcat starter. The
latter is part of a set of starters that do not bring the base starter
and the former can be excluded to use gson rather than jackson.
When such arrangement happens, spring-boot-starter-web no longer defines
the base starter (and therefore doesn't bring the core dependencies
that Spring Boot needs to bootstrap).
This commit reviews the starters that define optional starters and
reintroduce the base starter.
Closes gh-14076
As of Spring Framework 5.1, we're depending on the Reactor Californium
release train.
Reactor Netty is now at version 0.8 and changed its artifact
coordinates, package names and broke several APIs. Spring Framework is
now up-to-date with those changes and this commit does the same for
Spring Boot.
Note that in that process, the `NettyServerCustomizer` has been changed
since the former `HttpServerOptions.Builder` API is now gone from
Reactor Netty, and we're now relying on immutable server instances
instead of a stateful builder pattern.
See gh-13321
This commit configures the failsafe plugin to use the classes directory
rather than the produced jar file as the latter can be a repackaged jar
by default.
Closes gh-11974
Now that Spring Boot supports Freemarker for both Spring MVC and Spring
WebFlux, the dedicated starter should not pull the Web starter
transitively and let developers manually choose the web stack.
Closes gh-11246
Restore `spring-boot-maven-plugin` dependency in `maven-shade-plugin`
starter configuration. Required so that the shade plugin can use
`PropertiesMergingResourceTransformer` if wanted.
Fixes gh-11200
Previously, a dependency on jackson-module-kotlin with Kotlin excluded
was added to spring-boot-starter-json. This gave Kotlin users a smooth
experience with Jackson and JSON at minimal, we thought, cost to other
users. We have since learned that this arrangement causes a
ClassNotFoundException at runtime when Jackson is configured to find
modules via the service loader. This makes the cost of including
jackson-module-kotlin to high for non-Kotlin users so this commit
removes it.
Closes gh-11133
Following some changes in the latest snapshot this includes:
- Some updates to oauth2 client auto-config
- Security auto-config no longer relies on GlobalAuthenticationConfigurerAdapter
- Remove reactive security starter
Closes gh-10704
Move projects to better reflect the way that Spring Boot is released.
The following projects are under `spring-boot-project`:
- `spring-boot`
- `spring-boot-autoconfigure`
- `spring-boot-tools`
- `spring-boot-starters`
- `spring-boot-actuator`
- `spring-boot-actuator-autoconfigure`
- `spring-boot-test`
- `spring-boot-test-autoconfigure`
- `spring-boot-devtools`
- `spring-boot-cli`
- `spring-boot-docs`
See gh-9316