This commit adds the `jackson-module-kotlin` dependency to the JSON
starter. As the other modules selected there, the goal is to provide
additional Jackson support to Spring Boot projects.
In this case, the Kotlin language is supported by many Spring projects
and this module is essential for (de)serialization with Jackson.
Note that the module has a transitive dependency on `kotlin-reflect`,
but this dependency should be brought by the application itself.
Spring Framework will configure the Kotlin Jackson module *only if* the
Kotlin sdk is present.
Closes gh-9803
Glassfish bundles an old and incomplete version of Glassfish. By
default, this leads to some of Jackson's classes being loaded from
inside the war file and others being loaded from Glassfish itself.
This mixture of versions does not end well and the application fails
to deploy.
This commit adds a Glassfish-specific deployment descriptor to
invert the web app class loader's delegation model. Rather than
preferring classes available from its parent, it will now prefer
those packaged inside the war file.
Closes gh-9391
This commit adds a new json starter that gathers the core bits to read
and write json with dedicated Java 8 extensions.
The web-related starters have been improved to use the new starter
rather than relying on `jackson-databind` directly.
Closes gh-9297
Previously, the documentation included hand-written tables for the
application, production, and technical starters.
This commit replaces the hand-written tables with tables that are
generated automatically from all of the starter poms, thereby ensuring
that the documentation is automatically kept up-to-date as starters
are added and removed. An extra column provided a link to each
starter's pom on GitHub has also been added to the table. This makes
it easier for users to see exactly what each starter contains.
Closes gh-5267
This commit replaces Spring Boot's basic dependency management support
with separate dependency management plugin. This has a number of
benefits including:
1. A Maven bom can be used rather than a custom properties file
2. Dependency management is applied transitively rather than only to
direct dependencies
3. Exclusions are applied as they would be in Maven
4. Gradle-generated poms are automatically configured with the
appropriate dependency management
Closes gh-2133