or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

index.md
tile.json

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

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.springframework.cloud/spring-cloud-starter-build@2025.0.x

To install, run

npx @tessl/cli install tessl/maven-org-springframework-cloud--spring-cloud-release-train@2025.0.0

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>