Skip to content

Files

Latest commit

Aug 15, 2024
6e06bf6 · Aug 15, 2024

History

History

bom

Spring Data - Release Train BOM example

This project shows the usage of the Spring Data BOM in a non-Spring-Boot project with both Maven and Gradle.

Properties

In both Maven and Gradle a couple of properties are used to define the versions of Spring Framework and Spring Data to use. For Spring Framework a plain version is used. For Spring Data we refer to the calver revision of the BOM. The naming of Spring Data releases uses the following conventions:

  • ${calver-version}-M1 → Milestones

  • ${calver-version}-RC1 → Release candidate

  • ${calver-version} → GA version

  • ${calver-version} → Services release (bugfixes) for that release train

Maven

The <dependencyManagement /> section declares dependencies to the BOMs for both Spring and Spring Data, using the import scope and pom type.

The standard <dependencies /> section can now list Spring Framework and Spring Data dependencies without declaring a version and still be sure all libraries are in matching versions.

Note that we do not declare a Spring Framework dependency here. The import of the Spring Framework BOM nonetheless makes sure we control the version of all transitive Spring Framework dependencies pulled in by the Spring Data modules.

Gradle

Gradle does not support Maven BOMs (Bill of Materials) out of the box, so the first thing to do is to import the dependency management plugin. This example is based on Java, but if you need a different language plugin (e.g. Kotlin), you can do so.

The dependencyManagement section can be used to import the Spring Framework BOM and Spring Data BOM.

The standard dependencies section can now list Spring and Spring Data dependencies without declaring a version and still be sure all libraries are align with each other.

Note how you do not declare a Spring Framework dependency. Nevertheless, the dependency management plugin and the Spring Framework BOM ensures you control the version of all transitive Spring Framework dependencies pulled in by Spring Data.