Skip to content

How to Find Exact Matching Spring Boot and Spring Cloud Version Numbers

I was setting up a new Spring Cloud project and hit a wall. The compatibility matrix told me “Hoxton works with Spring Boot 2.2.x and 2.3.x” — but what’s the exact version I should put in my pom.xml?

<version>Hoxton</version> <!-- Does this work? -->

Nope. Maven couldn’t resolve it. I needed the full version: Hoxton.SR12. But how do you find that?

The Problem

The official Spring Cloud compatibility matrix shows release train families (Hoxton, Leyton, Kilburn, Moorgate) but not the exact version numbers. When I looked at it, I saw:

Release TrainSpring Boot Version
Hoxton2.2.x, 2.3.x
Kilburn3.0.x, 3.1.x
Leyton3.2.x, 3.3.x

But I couldn’t find the answers to my real questions:

  • What’s the latest Hoxton? (Hoxton.SR12? Hoxton.SR11?)
  • What’s the highest Boot 2.3.x? (2.3.12.RELEASE?)
  • Does Kilburn work with Boot 3.0.x or 3.1.x?

I needed a workflow to find exact versions, not just family names.

The Solution: A 4-Step Workflow

After some digging and a helpful Stack Overflow thread, I found a reliable workflow:

Finding Exact Versions Workflow
┌─────────────────────────────────────────────────────────────────┐
│ START: Need Exact Versions │
└───────────────────────────┬─────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ STEP 1: Identify Release Train Family │
│ ─────────────────────────────────────────────── │
│ Go to: spring.io/projects/spring-cloud │
│ Find the "Release Train Spring Boot Compatibility" table │
│ │
│ Result: "I need Hoxton for Boot 2.3.x" │
└───────────────────────────┬─────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ STEP 2: Get Exact Release Train Version │
│ ──────────────────────────────────────────── │
│ Option A: Click the release train name link on spring.io │
│ Option B: Check github.com/spring-cloud/spring-cloud-release │
│ /tags │
│ │
│ Result: Hoxton → Hoxton.SR12 (latest service release) │
└───────────────────────────┬─────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ STEP 3: Find Matching Boot Version │
│ ────────────────────────────────────── │
│ From matrix: Hoxton supports Boot 2.2.x, 2.3.x │
│ Go to: github.com/spring-projects/spring-boot/tags │
│ Find highest version in that family │
│ │
│ Result: Boot 2.3.x → 2.3.12.RELEASE │
└───────────────────────────┬─────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ STEP 4: Verify with Spring Initializr API │
│ ───────────────────────────────────────────── │
│ Run: curl -s https://start.spring.io/actuator/info | jq │
│ │
│ Confirms: "Hoxton.SR12" works with │
│ "Spring Boot >=2.2.0.RELEASE and <2.4.0.M1" │
└───────────────────────────┬─────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ DONE: Exact Versions Found │
│ Spring Boot: 2.3.12.RELEASE │
│ Spring Cloud: Hoxton.SR12 │
└─────────────────────────────────────────────────────────────────┘

Let me walk through each step with real examples.

Step 1: Identify the Release Train Family

I started at the official Spring Cloud page: https://spring.io/projects/spring-cloud

The compatibility table told me which release train family matched my Spring Boot version. For Boot 2.3.x, I needed Hoxton.

Step 2: Get the Exact Release Train Version

The table shows “Hoxton” but that’s not a valid Maven version. I needed Hoxton.SR12 (or whatever the latest SR is).

I checked GitHub tags:

Checking Spring Cloud release tags
# Visit in browser or use curl:
https://github.com/spring-cloud/spring-cloud-release/tags

There I found all the service releases:

  • Hoxton.SR1
  • Hoxton.SR2
  • Hoxton.SR12 (latest!)

Some examples I noted:

FamilyLatest Version
HoxtonHoxton.SR12
Kilburn2022.0.4
Leyton2023.0.4
Moorgate2024.0.0

Step 3: Find the Matching Boot Version

The matrix said Hoxton works with Boot 2.2.x and 2.3.x. I wanted the latest 2.3.x.

Checking Spring Boot tags
https://github.com/spring-projects/spring-boot/tags

I found the highest 2.3.x version: v2.3.12.RELEASE (so in pom.xml: 2.3.12.RELEASE).

Quick reference:

For Release TrainUse Boot Version
Leyton (3.2.x, 3.3.x)3.3.5 or 3.2.10
Kilburn (3.0.x, 3.1.x)3.1.12 or 3.0.13
Hoxton (2.2.x, 2.3.x)2.3.12.RELEASE

Step 4: Verify with Spring Initializr API

This step saved me from a mistake. Spring Initializr has an API that returns exact version ranges:

Query Spring Initializr for version ranges
curl -s https://start.spring.io/actuator/info | jq '.spring-cloud'

The response confirmed my choices:

Spring Initializr API response
{
"Hoxton.SR12": "Spring Boot >=2.2.0.RELEASE and <2.4.0.M1",
"2020.0.5": "Spring Boot >=2.4.0.M1 and <2.6.0-M1",
"2022.0.0-M1": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
}

This confirmed: Hoxton.SR12 works with Boot 2.2.x and 2.3.x (but NOT 2.4.x).

The Working pom.xml

After this workflow, I had my exact versions:

pom.xml with exact versions
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<!-- Found via github.com/spring-projects/spring-boot/tags -->
<version>2.3.12.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<!-- Found via github.com/spring-cloud/spring-cloud-release/tags -->
<version>Hoxton.SR12</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

Why This Matters

Using correct exact versions isn’t just pedantic. It ensures:

  1. Module alignment — All Spring Cloud modules (Netflix, Config, Gateway, etc.) are tested together within a release train
  2. No version drift — Subtle bugs can occur when versions drift within a release train
  3. Deterministic builds — Your pom.xml produces the same build every time
  4. Fewer “works on my machine” incidents — Team members get identical dependency resolution

Common Mistakes I Made

Mistake 1: Using Family Name Without SR Suffix

<!-- WRONG -->
<version>Hoxton</version>
<!-- RIGHT -->
<version>Hoxton.SR12</version>

Mistake 2: Assuming Highest Boot Version Works

I almost used Boot 2.4.x with Hoxton. Wrong! The matrix clearly shows Hoxton stops at 2.3.x.

Mistake 3: Trusting Outdated Blog Posts

A blog post from 2021 said “use Hoxton.SR10”. But GitHub tags showed SR12 was available. Always verify with the official sources.

Mistake 4: Using Milestone Versions Unchecked

Milestone versions (like 2021.0.0-M1) have different Boot compatibility than GA releases. Check the Initializr API to be sure.

Bonus: The Supported Versions Wiki

For the complete picture, there’s also a wiki page with the full matrix:

https://github.com/spring-cloud/spring-cloud-release/wiki/Supported-Versions

This shows individual module versions too (spring-cloud-config, spring-cloud-netflix, etc.), which is helpful if you’re debugging specific module issues.

Summary

Finding exact Spring Boot and Spring Cloud versions requires combining multiple sources:

  1. spring.io/projects/spring-cloud — Start here to find the release train family
  2. GitHub release tags — Get exact version numbers (Hoxton.SR12, not just Hoxton)
  3. Spring Initializr API — Verify the version ranges match your Boot version

Don’t rely on family names alone. Always use the latest service release number, and verify with the API before committing to your pom.xml.

Final Words + More Resources

My intention with this article was to help others share my knowledge and experience. If you want to contact me, you can contact by email: Email me

Here are also the most important links from this article along with some further resources that will help you in this scope:

Oh, and if you found these resources useful, don’t forget to support me by starring the repo on GitHub!

Comments