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 Train | Spring Boot Version |
|---|---|
| Hoxton | 2.2.x, 2.3.x |
| Kilburn | 3.0.x, 3.1.x |
| Leyton | 3.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:
┌─────────────────────────────────────────────────────────────────┐│ 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:
# Visit in browser or use curl:https://github.com/spring-cloud/spring-cloud-release/tagsThere I found all the service releases:
- Hoxton.SR1
- Hoxton.SR2
- …
- Hoxton.SR12 (latest!)
Some examples I noted:
| Family | Latest Version |
|---|---|
| Hoxton | Hoxton.SR12 |
| Kilburn | 2022.0.4 |
| Leyton | 2023.0.4 |
| Moorgate | 2024.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.
https://github.com/spring-projects/spring-boot/tagsI found the highest 2.3.x version: v2.3.12.RELEASE (so in pom.xml: 2.3.12.RELEASE).
Quick reference:
| For Release Train | Use 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:
curl -s https://start.spring.io/actuator/info | jq '.spring-cloud'The response confirmed my choices:
{ "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:
<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:
- Module alignment — All Spring Cloud modules (Netflix, Config, Gateway, etc.) are tested together within a release train
- No version drift — Subtle bugs can occur when versions drift within a release train
- Deterministic builds — Your pom.xml produces the same build every time
- 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-VersionsThis 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:
- spring.io/projects/spring-cloud — Start here to find the release train family
- GitHub release tags — Get exact version numbers (Hoxton.SR12, not just Hoxton)
- 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