S Stubborn

Transition Guide

From Spring Cloud Contract to Stubborn Contract

A plain-language FAQ on what changed, what didn't, and how to move to Stubborn Contract 0.1.2.

Current status

Stubborn Contract 0.1.2 is released and on Maven Central, with Stubborn-branded coordinates, renamed packages, and published migration instructions. Spring Cloud Contract is being removed from Spring Cloud release trains, future ones and ones already shipped, so this is not a change you can wait out. Migration is backward-compatible, your existing contracts, stubs, and stub-runner configuration keep working. Read the 0.1.2 announcement or go straight to the migration guide.

What happened?

Spring Cloud Contract is entering a new chapter as it transitions away from the Spring Cloud portfolio. Stubborn Contract is the official continuation of the project, led by Marcin Grzejszczak, one of its original creators. The repository transition has moved the project under the Stubborn organization.

What changes?

The repackaging is done and released. Artifacts are published to Maven Central under the Stubborn-branded groupId (org.springframework.cloud becomes sh.stubborn), and the Java packages were renamed to match (org.springframework.cloud.contract becomes sh.stubborn.contract). Pin the sh.stubborn:stubborn-contract-dependencies BOM at 0.1.2 and every module lines up.

Which Spring Cloud release trains are affected?

Spring Cloud Contract is being removed from future Spring Cloud release trains, and is also being pulled from release trains that already shipped it. If your organization currently pins a Spring Cloud BOM version, don't assume an existing pin protects you indefinitely, check Spring's own release notes for your train, and treat this as a "when," not "if," migration.

What stays the same?

The contract-testing approach, the core testing model, and the open-source license (Apache 2.0) remain unchanged. Stubborn Contract is deliberately backward-compatible: existing contracts in every supported format run unchanged, SCC-generated WireMock stubs still match at runtime, and legacy spring.cloud.contract.stubrunner.* properties still bind (mapped to the new stubborn.contract.stubrunner.* prefix, deprecated with a warning).

Current status

Stubborn Contract 0.1.2 is released and available on Maven Central, with new Maven coordinates, renamed packages, and published migration instructions. It runs on Java 17+ (tested on 21 and 25) with Spring Boot 4.1, and adds Spring-free messaging building blocks for Kafka, RabbitMQ, and JMS. See the 0.1.2 announcement for the full picture.

When can users migrate?

Now. Stubborn Contract 0.1.2 ships the documented package and coordinate changes, so you can migrate today. The migration guide covers the steps, and an OpenRewrite recipe automates the mechanical ones. See the Roadmap for what has shipped and what comes next.

What should existing Spring Cloud Contract users do now?

Plan the move to Stubborn Contract 0.1.2. Nothing breaks today if you stay put, but Spring Cloud Contract is coming out of release trains you may already be running, so this is not a change you can wait out. Migration is deliberately low-risk: existing contracts (Groovy DSL, YAML, Java DSL), SCC-generated WireMock stubs, and legacy spring.cloud.contract.stubrunner.* properties all keep working, so you can adopt it incrementally. Start with the migration guide. If your production systems depend on contract testing staying reliable through this transition, an Enterprise Partnership gets you roadmap input and direct support.

Where are the migration instructions?

They are published. The full guide, including the new Maven coordinates, package names, and the OpenRewrite recipe that automates the mechanical steps, lives at docs.stubborn.sh and in the Stubborn Contract repository.

Want to shape the transition?

Enterprise Partners help fund and prioritize migration tooling and roadmap work.