Why Spring Cloud Dropped spring-cloud-starter-parent and How to Migrate

Spring Cloud 2025.1.0 removes the long‑standing spring-cloud-starter-parent, simplifying dependency management, aligning with Spring Boot 4, and improving flexibility, while the article explains the reasons, community reaction, and step‑by‑step migration guidance.

Java Tech Enthusiast
Java Tech Enthusiast
Java Tech Enthusiast
Why Spring Cloud Dropped spring-cloud-starter-parent and How to Migrate

Spring Cloud 2025.1.0 marks a milestone release by upgrading to Spring Boot 4 and Framework 7 and, most notably, removing the spring-cloud-starter-parent POM that has been used for years to manage dependencies.

spring-cloud-starter-parent officially retires

The parent POM was a familiar fixture for many developers, acting as a friend that bundled Spring Cloud component versions. Its removal was announced in the official blog and sparked extensive community discussion.

The history of spring-cloud-starter-parent

Previously, projects could inherit either spring-boot-starter-parent or spring-cloud-starter-parent:

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>3.7.18</version>
</parent>

or

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

The latter extended the Boot parent, adding Spring Cloud dependencies but introduced deep dependency hierarchies, tight coupling to Boot versions, and limited flexibility.

Why remove it?

Simplify dependency hierarchy : The three‑level chain (project → spring‑cloud‑starter‑parent → spring‑boot‑starter‑parent → spring‑boot‑dependencies) made version management cumbersome, especially for large enterprise projects.

Explicit version control : Previously the Spring Cloud version implicitly dictated the Boot version, preventing independent upgrades. The new approach makes version selection explicit.

Align with Spring Boot 4 philosophy : Boot 4 promotes "explicit configuration over implicit conventions," encouraging transparent dependency management.

Reduce migration cost for enterprises : Custom corporate parent POMs can now import the Spring Cloud BOM directly, avoiding the need to inherit the removed parent.

Community reaction

Initial concerns focused on which parent to use for services like Eureka or Gateway. Over time, developers accepted the change as it clarified responsibilities (Boot for core, Cloud for extensions) and offered more flexible version combinations.

Migration guide

For existing projects, follow three steps:

Switch the parent to spring-boot-starter-parent with version 4.0.0.

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>4.0.0</version>
  <relativePath/>
</parent>

Import the Spring Cloud BOM in dependencyManagement:

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

Add required Spring Cloud starters without specifying versions, relying on the BOM.

<dependencies>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-kubernetes-client</artifactId>
  </dependency>
</dependencies>

Best‑practice configuration for new projects

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>4.0.0</version>
</parent>

<properties>
  <java.version>21</java.version>
  <spring-cloud.version>2025.1.0</spring-cloud.version>
</properties>

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

Enterprise projects should consider:

Custom parent POMs can import the BOM in their own dependencyManagement to avoid duplication.

Multiple microservices can run different Spring Cloud versions as long as they stay compatible with the shared Boot version.

Run mvn dependency:tree after migration to detect conflicts.

Conclusion

Removing spring-cloud-starter-parent is a strategic move toward clearer architecture, more flexible version management, and lower entry barriers for enterprise adoption. While it may raise short‑term migration effort, developers who adapt early will benefit from a cleaner, more maintainable stack in the upcoming Spring Cloud 6.x and 7.x releases.

dependency managementmavenSpring CloudMigration GuideSpring Boot 4
Java Tech Enthusiast
Written by

Java Tech Enthusiast

Sharing computer programming language knowledge, focusing on Java fundamentals, data structures, related tools, Spring Cloud, IntelliJ IDEA... Book giveaways, red‑packet rewards and other perks await!

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.