Spring Cloud Release Train - Provides spring-cloud-dependencies BOM and spring-cloud-starter-parent for comprehensive Spring Cloud dependency management and project configuration
npx @tessl/cli install tessl/maven-org-springframework-cloud--spring-cloud-release-train@2025.0.00
# Spring Cloud Release Train
1
2
The Spring Cloud Release Train is a curated set of dependencies across a range of Spring Cloud projects. It provides two essential Maven artifacts that simplify dependency management and project configuration for Spring Cloud applications: the spring-cloud-dependencies BOM for version management and the spring-cloud-starter-parent for complete project setup.
3
4
## Package Information
5
6
- **Package Name**: spring-cloud-starter-build (release train)
7
- **Package Type**: maven
8
- **Language**: Java
9
- **Group ID**: org.springframework.cloud
10
- **Version**: 2025.0.0
11
- **Packaging**: pom
12
- **URL**: https://projects.spring.io/spring-cloud
13
- **Organization**: Pivotal Software, Inc. (https://www.spring.io)
14
- **Installation**: Use as BOM import or parent POM in Maven projects
15
16
## Core Imports
17
18
### Using spring-cloud-dependencies BOM
19
20
```xml { .api }
21
<dependencyManagement>
22
<dependencies>
23
<dependency>
24
<groupId>org.springframework.cloud</groupId>
25
<artifactId>spring-cloud-dependencies</artifactId>
26
<version>2025.0.0</version>
27
<type>pom</type>
28
<scope>import</scope>
29
</dependency>
30
</dependencies>
31
</dependencyManagement>
32
```
33
34
### Using spring-cloud-starter-parent
35
36
```xml { .api }
37
<parent>
38
<groupId>org.springframework.cloud</groupId>
39
<artifactId>spring-cloud-starter-parent</artifactId>
40
<version>2025.0.0</version>
41
<relativePath/>
42
</parent>
43
```
44
45
## Basic Usage
46
47
### BOM Usage Pattern
48
49
```xml
50
<?xml version="1.0" encoding="UTF-8"?>
51
<project xmlns="http://maven.apache.org/POM/4.0.0"
52
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
53
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
54
http://maven.apache.org/xsd/maven-4.0.0.xsd">
55
<modelVersion>4.0.0</modelVersion>
56
57
<!-- Your existing parent POM -->
58
<parent>
59
<groupId>com.company</groupId>
60
<artifactId>my-parent</artifactId>
61
<version>1.0.0</version>
62
</parent>
63
64
<groupId>com.example</groupId>
65
<artifactId>my-spring-cloud-app</artifactId>
66
<version>1.0.0</version>
67
68
<!-- Import Spring Cloud BOM for dependency management -->
69
<dependencyManagement>
70
<dependencies>
71
<dependency>
72
<groupId>org.springframework.cloud</groupId>
73
<artifactId>spring-cloud-dependencies</artifactId>
74
<version>2025.0.0</version>
75
<type>pom</type>
76
<scope>import</scope>
77
</dependency>
78
</dependencies>
79
</dependencyManagement>
80
81
<dependencies>
82
<!-- Spring Cloud dependencies without version specification -->
83
<dependency>
84
<groupId>org.springframework.cloud</groupId>
85
<artifactId>spring-cloud-starter-config</artifactId>
86
</dependency>
87
<dependency>
88
<groupId>org.springframework.cloud</groupId>
89
<artifactId>spring-cloud-starter-gateway</artifactId>
90
</dependency>
91
</dependencies>
92
</project>
93
```
94
95
### Parent POM Usage Pattern
96
97
```xml
98
<?xml version="1.0" encoding="UTF-8"?>
99
<project xmlns="http://maven.apache.org/POM/4.0.0"
100
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
101
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
102
http://maven.apache.org/xsd/maven-4.0.0.xsd">
103
<modelVersion>4.0.0</modelVersion>
104
105
<!-- Use Spring Cloud Starter Parent -->
106
<parent>
107
<groupId>org.springframework.cloud</groupId>
108
<artifactId>spring-cloud-starter-parent</artifactId>
109
<version>2025.0.0</version>
110
<relativePath/>
111
</parent>
112
113
<groupId>com.example</groupId>
114
<artifactId>my-spring-cloud-app</artifactId>
115
<version>1.0.0</version>
116
117
<dependencies>
118
<!-- Spring Cloud dependencies without version specification -->
119
<dependency>
120
<groupId>org.springframework.cloud</groupId>
121
<artifactId>spring-cloud-starter-config</artifactId>
122
</dependency>
123
<dependency>
124
<groupId>org.springframework.cloud</groupId>
125
<artifactId>spring-cloud-starter-gateway</artifactId>
126
</dependency>
127
</dependencies>
128
</project>
129
```
130
131
## Architecture
132
133
The Spring Cloud Release Train provides two complementary approaches to Spring Cloud dependency management:
134
135
### Release Train Structure
136
- **spring-cloud-dependencies**: Bill of Materials (BOM) that imports 15 Spring Cloud component BOMs
137
- **spring-cloud-starter-parent**: Complete parent POM that extends Spring Boot and includes the BOM
138
- **Version Alignment**: Ensures compatible versions across all Spring Cloud components
139
- **Release Naming**: Uses alphabetic naming (2025.0.0 release train) rather than individual component versions
140
141
### Dependency Management Hierarchy
142
```
143
spring-cloud-dependencies (BOM)
144
├── spring-cloud-commons-dependencies
145
├── spring-cloud-config-dependencies
146
├── spring-cloud-gateway-dependencies
147
├── spring-cloud-netflix-dependencies
148
├── spring-cloud-stream-dependencies
149
└── ... (11 more component BOMs)
150
151
spring-cloud-starter-parent
152
├── extends: spring-boot-starter-parent:3.5.0
153
├── imports: spring-cloud-dependencies:2025.0.0
154
├── provides: repository configurations
155
└── provides: build profiles and distribution management
156
```
157
158
## Usage Comparison
159
160
| Aspect | spring-cloud-dependencies | spring-cloud-starter-parent |
161
|--------|---------------------------|------------------------------|
162
| **Use Case** | Already have parent POM | Need complete parent solution |
163
| **Parent POM** | Keep your existing parent | Extends Spring Boot parent |
164
| **Configuration** | BOM import only | Complete build configuration |
165
| **Repository Setup** | Manual configuration | Pre-configured Spring repos |
166
| **Build Profiles** | Not included | Development, milestone, central |
167
| **Distribution** | Not included | Pre-configured publishing |
168
| **Gradle Support** | Yes (platform/BOM) | No (Maven parent only) |
169
| **Flexibility** | Maximum control | Opinionated defaults |
170
171
## Capabilities
172
173
### Spring Cloud Dependencies BOM
174
175
Provides centralized version management for all Spring Cloud components through a Bill of Materials that can be imported into any Maven or Gradle project.
176
177
```xml { .api }
178
<dependencyManagement>
179
<dependencies>
180
<dependency>
181
<groupId>org.springframework.cloud</groupId>
182
<artifactId>spring-cloud-dependencies</artifactId>
183
<version>2025.0.0</version>
184
<type>pom</type>
185
<scope>import</scope>
186
</dependency>
187
</dependencies>
188
</dependencyManagement>
189
```
190
191
The BOM imports dependency management from these Spring Cloud component BOMs:
192
193
```xml { .api }
194
<!-- Core Spring Cloud Components (versions managed by BOM) -->
195
<dependency>
196
<groupId>org.springframework.cloud</groupId>
197
<artifactId>spring-cloud-commons-dependencies</artifactId>
198
<version>4.3.0</version>
199
<type>pom</type>
200
<scope>import</scope>
201
</dependency>
202
203
<dependency>
204
<groupId>org.springframework.cloud</groupId>
205
<artifactId>spring-cloud-config-dependencies</artifactId>
206
<version>4.3.0</version>
207
<type>pom</type>
208
<scope>import</scope>
209
</dependency>
210
211
<dependency>
212
<groupId>org.springframework.cloud</groupId>
213
<artifactId>spring-cloud-gateway-dependencies</artifactId>
214
<version>4.3.0</version>
215
<type>pom</type>
216
<scope>import</scope>
217
</dependency>
218
219
<!-- ... continues for all 15 components -->
220
```
221
222
**Gradle Usage:**
223
224
```gradle { .api }
225
dependencyManagement {
226
imports {
227
mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2025.0.0'
228
}
229
}
230
231
dependencies {
232
implementation 'org.springframework.cloud:spring-cloud-starter-config'
233
implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
234
}
235
```
236
237
### Spring Cloud Components
238
239
The Release Train manages versions for these Spring Cloud components:
240
241
**Service Discovery & Configuration:**
242
- **spring-cloud-commons** (4.3.0): Common abstractions and utilities across Spring Cloud
243
- **spring-cloud-config** (4.3.0): Externalized configuration management with Git, Vault, and database backends
244
- **spring-cloud-consul** (4.3.0): Service discovery and configuration using HashiCorp Consul
245
- **spring-cloud-zookeeper** (4.3.0): Service discovery and configuration using Apache ZooKeeper
246
- **spring-cloud-kubernetes** (3.3.0): Kubernetes-native service discovery and configuration
247
248
**API Gateway & Routing:**
249
- **spring-cloud-gateway** (4.3.0): Reactive API gateway with routing, filtering, and rate limiting
250
- **spring-cloud-netflix** (4.3.0): Netflix OSS integrations including Eureka service registry
251
252
**Communication & Integration:**
253
- **spring-cloud-openfeign** (4.3.0): Declarative REST clients with load balancing and circuit breakers
254
- **spring-cloud-stream** (4.3.0): Event-driven microservices framework with message broker abstractions
255
- **spring-cloud-bus** (4.3.0): Event bus for distributed configuration changes and management events
256
257
**Resilience & Monitoring:**
258
- **spring-cloud-circuitbreaker** (3.3.0): Circuit breaker implementations with Resilience4j and Spring Retry
259
- **spring-cloud-contract** (4.3.0): Consumer-driven contract testing for microservices
260
261
**Functions & Tasks:**
262
- **spring-cloud-function** (4.3.0): Function-as-a-Service abstractions for serverless computing
263
- **spring-cloud-task** (3.3.0): Short-lived microservices and batch processing
264
265
**Security & Secrets:**
266
- **spring-cloud-vault** (4.3.0): HashiCorp Vault integration for secrets management
267
268
### Spring Cloud Starter Parent
269
270
Extends Spring Boot's starter parent to provide complete Spring Cloud project configuration including dependency management, repository setup, and build profiles.
271
272
```xml { .api }
273
<parent>
274
<groupId>org.springframework.cloud</groupId>
275
<artifactId>spring-cloud-starter-parent</artifactId>
276
<version>2025.0.0</version>
277
<relativePath/>
278
</parent>
279
```
280
281
**Parent Chain:**
282
283
```xml { .api }
284
<!-- Your Project -->
285
<parent>
286
<groupId>org.springframework.cloud</groupId>
287
<artifactId>spring-cloud-starter-parent</artifactId>
288
<version>2025.0.0</version>
289
</parent>
290
291
<!-- Which extends -->
292
<parent>
293
<groupId>org.springframework.boot</groupId>
294
<artifactId>spring-boot-starter-parent</artifactId>
295
<version>3.5.0</version>
296
</parent>
297
```
298
299
**Included Dependency Management:**
300
301
```xml { .api }
302
<dependencyManagement>
303
<dependencies>
304
<dependency>
305
<groupId>org.springframework.cloud</groupId>
306
<artifactId>spring-cloud-dependencies</artifactId>
307
<version>2025.0.0</version>
308
<type>pom</type>
309
<scope>import</scope>
310
</dependency>
311
</dependencies>
312
</dependencyManagement>
313
```
314
315
### Repository Configuration
316
317
The parent POM provides Maven repository configurations through build profiles for accessing Spring's repositories during development and CI/CD.
318
319
```xml { .api }
320
<profile>
321
<id>spring</id>
322
<repositories>
323
<repository>
324
<id>spring-snapshots</id>
325
<name>Spring Snapshots</name>
326
<url>https://repo.spring.io/libs-snapshot-local</url>
327
<snapshots>
328
<enabled>true</enabled>
329
</snapshots>
330
</repository>
331
<repository>
332
<id>spring-milestones</id>
333
<name>Spring Milestones</name>
334
<url>https://repo.spring.io/libs-milestone-local</url>
335
<snapshots>
336
<enabled>false</enabled>
337
</snapshots>
338
</repository>
339
<repository>
340
<id>spring-releases</id>
341
<name>Spring Releases</name>
342
<url>https://repo.spring.io/release</url>
343
<snapshots>
344
<enabled>false</enabled>
345
</snapshots>
346
</repository>
347
</repositories>
348
</profile>
349
```
350
351
**Profile Activation:**
352
353
```bash { .api }
354
# Development build with Spring repositories
355
mvn clean install -Pspring
356
357
# Milestone release
358
mvn clean deploy -Pmilestone
359
360
# Maven Central release with signing
361
mvn clean deploy -Pcentral
362
```
363
364
### Distribution Management
365
366
Configures publishing destinations for different deployment scenarios:
367
368
```xml { .api }
369
<distributionManagement>
370
<repository>
371
<id>repo.spring.io</id>
372
<name>Spring Release Repository</name>
373
<url>https://repo.spring.io/libs-release-local</url>
374
</repository>
375
<snapshotRepository>
376
<id>repo.spring.io</id>
377
<name>Spring Snapshot Repository</name>
378
<url>https://repo.spring.io/libs-snapshot-local</url>
379
</snapshotRepository>
380
</distributionManagement>
381
```
382
383
### Build Profiles
384
385
Four specialized build profiles for different deployment scenarios:
386
387
```xml { .api }
388
<!-- Spring Profile: Development with Spring repositories -->
389
<profile>
390
<id>spring</id>
391
<!-- Provides spring-snapshots, spring-milestones, spring-releases repositories -->
392
</profile>
393
394
<!-- Milestone Profile: Milestone release distribution -->
395
<profile>
396
<id>milestone</id>
397
<!-- Publishes to https://repo.spring.io/libs-milestone-local -->
398
</profile>
399
400
<!-- Central Profile: Maven Central with GPG signing -->
401
<profile>
402
<id>central</id>
403
<build>
404
<plugins>
405
<plugin>
406
<groupId>org.apache.maven.plugins</groupId>
407
<artifactId>maven-gpg-plugin</artifactId>
408
<executions>
409
<execution>
410
<id>sign-artifacts</id>
411
<phase>verify</phase>
412
<goals>
413
<goal>sign</goal>
414
</goals>
415
</execution>
416
</executions>
417
</plugin>
418
</plugins>
419
</build>
420
<distributionManagement>
421
<snapshotRepository>
422
<id>sonatype-nexus-snapshots</id>
423
<name>Sonatype Nexus Snapshots</name>
424
<url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
425
</snapshotRepository>
426
<repository>
427
<id>sonatype-nexus-staging</id>
428
<name>Nexus Release Repository</name>
429
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
430
</repository>
431
</distributionManagement>
432
</profile>
433
```
434
435
## Properties
436
437
Configuration properties available to child projects:
438
439
```xml { .api }
440
<properties>
441
<spring-cloud.version>2025.0.0</spring-cloud.version>
442
<main.basedir>${basedir}/../..</main.basedir>
443
</properties>
444
```
445
446
Child projects can reference these properties:
447
448
```xml { .api }
449
<properties>
450
<my.custom.version>${spring-cloud.version}</my.custom.version>
451
</properties>
452
```
453
454
## Usage Examples
455
456
### Configuration Server with BOM
457
458
```xml { .api }
459
<?xml version="1.0" encoding="UTF-8"?>
460
<project xmlns="http://maven.apache.org/POM/4.0.0">
461
<modelVersion>4.0.0</modelVersion>
462
463
<parent>
464
<groupId>org.springframework.boot</groupId>
465
<artifactId>spring-boot-starter-parent</artifactId>
466
<version>3.5.0</version>
467
<relativePath/>
468
</parent>
469
470
<groupId>com.example</groupId>
471
<artifactId>config-server</artifactId>
472
<version>1.0.0</version>
473
474
<dependencyManagement>
475
<dependencies>
476
<dependency>
477
<groupId>org.springframework.cloud</groupId>
478
<artifactId>spring-cloud-dependencies</artifactId>
479
<version>2025.0.0</version>
480
<type>pom</type>
481
<scope>import</scope>
482
</dependency>
483
</dependencies>
484
</dependencyManagement>
485
486
<dependencies>
487
<dependency>
488
<groupId>org.springframework.cloud</groupId>
489
<artifactId>spring-cloud-config-server</artifactId>
490
</dependency>
491
<dependency>
492
<groupId>org.springframework.boot</groupId>
493
<artifactId>spring-boot-starter-web</artifactId>
494
</dependency>
495
</dependencies>
496
</project>
497
```
498
499
### Microservice with Parent POM
500
501
```xml { .api }
502
<?xml version="1.0" encoding="UTF-8"?>
503
<project xmlns="http://maven.apache.org/POM/4.0.0">
504
<modelVersion>4.0.0</modelVersion>
505
506
<parent>
507
<groupId>org.springframework.cloud</groupId>
508
<artifactId>spring-cloud-starter-parent</artifactId>
509
<version>2025.0.0</version>
510
<relativePath/>
511
</parent>
512
513
<groupId>com.example</groupId>
514
<artifactId>user-service</artifactId>
515
<version>1.0.0</version>
516
517
<dependencies>
518
<dependency>
519
<groupId>org.springframework.boot</groupId>
520
<artifactId>spring-boot-starter-web</artifactId>
521
</dependency>
522
<dependency>
523
<groupId>org.springframework.cloud</groupId>
524
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
525
</dependency>
526
<dependency>
527
<groupId>org.springframework.cloud</groupId>
528
<artifactId>spring-cloud-starter-config</artifactId>
529
</dependency>
530
<dependency>
531
<groupId>org.springframework.cloud</groupId>
532
<artifactId>spring-cloud-starter-openfeign</artifactId>
533
</dependency>
534
</dependencies>
535
</project>
536
```
537
538
### API Gateway with Circuit Breaker
539
540
```xml { .api }
541
<?xml version="1.0" encoding="UTF-8"?>
542
<project xmlns="http://maven.apache.org/POM/4.0.0">
543
<modelVersion>4.0.0</modelVersion>
544
545
<parent>
546
<groupId>org.springframework.cloud</groupId>
547
<artifactId>spring-cloud-starter-parent</artifactId>
548
<version>2025.0.0</version>
549
<relativePath/>
550
</parent>
551
552
<groupId>com.example</groupId>
553
<artifactId>api-gateway</artifactId>
554
<version>1.0.0</version>
555
556
<dependencies>
557
<dependency>
558
<groupId>org.springframework.cloud</groupId>
559
<artifactId>spring-cloud-starter-gateway</artifactId>
560
</dependency>
561
<dependency>
562
<groupId>org.springframework.cloud</groupId>
563
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
564
</dependency>
565
<dependency>
566
<groupId>org.springframework.cloud</groupId>
567
<artifactId>spring-cloud-starter-circuitbreaker-reactor-resilience4j</artifactId>
568
</dependency>
569
</dependencies>
570
</project>
571
```
572
573
### Gradle Project with BOM
574
575
```gradle { .api }
576
plugins {
577
id 'org.springframework.boot' version '3.5.0'
578
id 'io.spring.dependency-management' version '1.1.0'
579
id 'java'
580
}
581
582
group = 'com.example'
583
version = '1.0.0'
584
sourceCompatibility = '17'
585
586
dependencyManagement {
587
imports {
588
mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2025.0.0'
589
}
590
}
591
592
dependencies {
593
implementation 'org.springframework.boot:spring-boot-starter-web'
594
implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
595
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
596
implementation 'org.springframework.cloud:spring-cloud-starter-config'
597
testImplementation 'org.springframework.boot:spring-boot-starter-test'
598
}
599
```
600
601
## Maven Coordinates
602
603
### spring-cloud-dependencies
604
605
```xml { .api }
606
<groupId>org.springframework.cloud</groupId>
607
<artifactId>spring-cloud-dependencies</artifactId>
608
<version>2025.0.0</version>
609
<packaging>pom</packaging>
610
```
611
612
### spring-cloud-starter-parent
613
614
```xml { .api }
615
<groupId>org.springframework.cloud</groupId>
616
<artifactId>spring-cloud-starter-parent</artifactId>
617
<version>2025.0.0</version>
618
<packaging>pom</packaging>
619
```