CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-springframework-cloud--spring-cloud-release-train

Spring Cloud Release Train - Provides spring-cloud-dependencies BOM and spring-cloud-starter-parent for comprehensive Spring Cloud dependency management and project configuration

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

index.mddocs/

Spring Cloud Release Train

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.

Package Information

  • Package Name: spring-cloud-starter-build (release train)
  • Package Type: maven
  • Language: Java
  • Group ID: org.springframework.cloud
  • Version: 2025.0.0
  • Packaging: pom
  • URL: https://projects.spring.io/spring-cloud
  • Organization: Pivotal Software, Inc. (https://www.spring.io)
  • Installation: Use as BOM import or parent POM in Maven projects

Core Imports

Using spring-cloud-dependencies BOM

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2025.0.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Using spring-cloud-starter-parent

<parent>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-parent</artifactId>
    <version>2025.0.0</version>
    <relativePath/>
</parent>

Basic Usage

BOM Usage Pattern

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    
    <!-- Your existing parent POM -->
    <parent>
        <groupId>com.company</groupId>
        <artifactId>my-parent</artifactId>
        <version>1.0.0</version>
    </parent>
    
    <groupId>com.example</groupId>
    <artifactId>my-spring-cloud-app</artifactId>
    <version>1.0.0</version>
    
    <!-- Import Spring Cloud BOM for dependency management -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2025.0.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <dependencies>
        <!-- Spring Cloud dependencies without version specification -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
    </dependencies>
</project>

Parent POM Usage Pattern

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    
    <!-- Use Spring Cloud Starter Parent -->
    <parent>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-parent</artifactId>
        <version>2025.0.0</version>
        <relativePath/>
    </parent>
    
    <groupId>com.example</groupId>
    <artifactId>my-spring-cloud-app</artifactId>
    <version>1.0.0</version>
    
    <dependencies>
        <!-- Spring Cloud dependencies without version specification -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
    </dependencies>
</project>

Architecture

The Spring Cloud Release Train provides two complementary approaches to Spring Cloud dependency management:

Release Train Structure

  • spring-cloud-dependencies: Bill of Materials (BOM) that imports 15 Spring Cloud component BOMs
  • spring-cloud-starter-parent: Complete parent POM that extends Spring Boot and includes the BOM
  • Version Alignment: Ensures compatible versions across all Spring Cloud components
  • Release Naming: Uses alphabetic naming (2025.0.0 release train) rather than individual component versions

Dependency Management Hierarchy

spring-cloud-dependencies (BOM)
├── spring-cloud-commons-dependencies
├── spring-cloud-config-dependencies  
├── spring-cloud-gateway-dependencies
├── spring-cloud-netflix-dependencies
├── spring-cloud-stream-dependencies
└── ... (11 more component BOMs)

spring-cloud-starter-parent
├── extends: spring-boot-starter-parent:3.5.0
├── imports: spring-cloud-dependencies:2025.0.0
├── provides: repository configurations
└── provides: build profiles and distribution management

Usage Comparison

Aspectspring-cloud-dependenciesspring-cloud-starter-parent
Use CaseAlready have parent POMNeed complete parent solution
Parent POMKeep your existing parentExtends Spring Boot parent
ConfigurationBOM import onlyComplete build configuration
Repository SetupManual configurationPre-configured Spring repos
Build ProfilesNot includedDevelopment, milestone, central
DistributionNot includedPre-configured publishing
Gradle SupportYes (platform/BOM)No (Maven parent only)
FlexibilityMaximum controlOpinionated defaults

Capabilities

Spring Cloud Dependencies BOM

Provides centralized version management for all Spring Cloud components through a Bill of Materials that can be imported into any Maven or Gradle project.

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2025.0.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

The BOM imports dependency management from these Spring Cloud component BOMs:

<!-- Core Spring Cloud Components (versions managed by BOM) -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-commons-dependencies</artifactId>
    <version>4.3.0</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-dependencies</artifactId>
    <version>4.3.0</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-gateway-dependencies</artifactId>
    <version>4.3.0</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

<!-- ... continues for all 15 components -->

Gradle Usage:

dependencyManagement {
    imports {
        mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2025.0.0'
    }
}

dependencies {
    implementation 'org.springframework.cloud:spring-cloud-starter-config'
    implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
}

Spring Cloud Components

The Release Train manages versions for these Spring Cloud components:

Service Discovery & Configuration:

  • spring-cloud-commons (4.3.0): Common abstractions and utilities across Spring Cloud
  • spring-cloud-config (4.3.0): Externalized configuration management with Git, Vault, and database backends
  • spring-cloud-consul (4.3.0): Service discovery and configuration using HashiCorp Consul
  • spring-cloud-zookeeper (4.3.0): Service discovery and configuration using Apache ZooKeeper
  • spring-cloud-kubernetes (3.3.0): Kubernetes-native service discovery and configuration

API Gateway & Routing:

  • spring-cloud-gateway (4.3.0): Reactive API gateway with routing, filtering, and rate limiting
  • spring-cloud-netflix (4.3.0): Netflix OSS integrations including Eureka service registry

Communication & Integration:

  • spring-cloud-openfeign (4.3.0): Declarative REST clients with load balancing and circuit breakers
  • spring-cloud-stream (4.3.0): Event-driven microservices framework with message broker abstractions
  • spring-cloud-bus (4.3.0): Event bus for distributed configuration changes and management events

Resilience & Monitoring:

  • spring-cloud-circuitbreaker (3.3.0): Circuit breaker implementations with Resilience4j and Spring Retry
  • spring-cloud-contract (4.3.0): Consumer-driven contract testing for microservices

Functions & Tasks:

  • spring-cloud-function (4.3.0): Function-as-a-Service abstractions for serverless computing
  • spring-cloud-task (3.3.0): Short-lived microservices and batch processing

Security & Secrets:

  • spring-cloud-vault (4.3.0): HashiCorp Vault integration for secrets management

Spring Cloud Starter Parent

Extends Spring Boot's starter parent to provide complete Spring Cloud project configuration including dependency management, repository setup, and build profiles.

<parent>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-parent</artifactId>
    <version>2025.0.0</version>
    <relativePath/>
</parent>

Parent Chain:

<!-- Your Project -->
<parent>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-parent</artifactId>
    <version>2025.0.0</version>
</parent>

<!-- Which extends -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.5.0</version>
</parent>

Included Dependency Management:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2025.0.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Repository Configuration

The parent POM provides Maven repository configurations through build profiles for accessing Spring's repositories during development and CI/CD.

<profile>
    <id>spring</id>
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/libs-snapshot-local</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/libs-milestone-local</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-releases</id>
            <name>Spring Releases</name>
            <url>https://repo.spring.io/release</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
</profile>

Profile Activation:

# Development build with Spring repositories
mvn clean install -Pspring

# Milestone release
mvn clean deploy -Pmilestone

# Maven Central release with signing
mvn clean deploy -Pcentral

Distribution Management

Configures publishing destinations for different deployment scenarios:

<distributionManagement>
    <repository>
        <id>repo.spring.io</id>
        <name>Spring Release Repository</name>
        <url>https://repo.spring.io/libs-release-local</url>
    </repository>
    <snapshotRepository>
        <id>repo.spring.io</id>
        <name>Spring Snapshot Repository</name>
        <url>https://repo.spring.io/libs-snapshot-local</url>
    </snapshotRepository>
</distributionManagement>

Build Profiles

Four specialized build profiles for different deployment scenarios:

<!-- Spring Profile: Development with Spring repositories -->
<profile>
    <id>spring</id>
    <!-- Provides spring-snapshots, spring-milestones, spring-releases repositories -->
</profile>

<!-- Milestone Profile: Milestone release distribution -->
<profile>
    <id>milestone</id>
    <!-- Publishes to https://repo.spring.io/libs-milestone-local -->
</profile>

<!-- Central Profile: Maven Central with GPG signing -->
<profile>
    <id>central</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-gpg-plugin</artifactId>
                <executions>
                    <execution>
                        <id>sign-artifacts</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>sign</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <distributionManagement>
        <snapshotRepository>
            <id>sonatype-nexus-snapshots</id>
            <name>Sonatype Nexus Snapshots</name>
            <url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
        </snapshotRepository>
        <repository>
            <id>sonatype-nexus-staging</id>
            <name>Nexus Release Repository</name>
            <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>
</profile>

Properties

Configuration properties available to child projects:

<properties>
    <spring-cloud.version>2025.0.0</spring-cloud.version>
    <main.basedir>${basedir}/../..</main.basedir>
</properties>

Child projects can reference these properties:

<properties>
    <my.custom.version>${spring-cloud.version}</my.custom.version>
</properties>

Usage Examples

Configuration Server with BOM

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0">
    <modelVersion>4.0.0</modelVersion>
    
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.5.0</version>
        <relativePath/>
    </parent>
    
    <groupId>com.example</groupId>
    <artifactId>config-server</artifactId>
    <version>1.0.0</version>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2025.0.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

Microservice with Parent POM

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0">
    <modelVersion>4.0.0</modelVersion>
    
    <parent>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-parent</artifactId>
        <version>2025.0.0</version>
        <relativePath/>
    </parent>
    
    <groupId>com.example</groupId>
    <artifactId>user-service</artifactId>
    <version>1.0.0</version>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>
</project>

API Gateway with Circuit Breaker

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0">
    <modelVersion>4.0.0</modelVersion>
    
    <parent>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-parent</artifactId>
        <version>2025.0.0</version>
        <relativePath/>
    </parent>
    
    <groupId>com.example</groupId>
    <artifactId>api-gateway</artifactId>
    <version>1.0.0</version>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-circuitbreaker-reactor-resilience4j</artifactId>
        </dependency>
    </dependencies>
</project>

Gradle Project with BOM

plugins {
    id 'org.springframework.boot' version '3.5.0'
    id 'io.spring.dependency-management' version '1.1.0'
    id 'java'
}

group = 'com.example'
version = '1.0.0'
sourceCompatibility = '17'

dependencyManagement {
    imports {
        mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2025.0.0'
    }
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
    implementation 'org.springframework.cloud:spring-cloud-starter-config'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

Maven Coordinates

spring-cloud-dependencies

<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2025.0.0</version>
<packaging>pom</packaging>

spring-cloud-starter-parent

<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>2025.0.0</version>
<packaging>pom</packaging>

docs

index.md

tile.json