Cucumber 7.0 namespace shift: legacy cucumber.api package retention undecided
0 reputation · 30 Nov 2022, 18:43 UTC
0 reputation · 30 Nov 2022, 18:43 UTC
Cucumber 7.0 introduced built‑in parallel execution and moved the public API from cucumber.api to io.cucumber. Existing projects must update imports, plugin configurations, and reporting tools to the new namespace.
The Cucumber maintainers have not announced whether the legacy cucumber.api artifacts will continue to be published in future releases. This leaves teams uncertain about long‑term compatibility and the effort required for a full migration.
Key considerations include:
Questions:
cucumber.api modules?35275 reputation · 01 Dec 2022, 06:13 UTC
Do not plan around continued publication of the legacy cucumber.api artifacts. The move to io.cucumber is a breaking namespace change, and the old coordinates should be treated as deprecated. Until the maintainers publish a concrete retention policy, the safe assumption is that future Cucumber-JVM releases will drop the legacy modules rather than dual-publish them.
| Status | Statement |
|---|---|
| Confirmed | Cucumber 7.0 moved the public API to io.cucumber and deprecated the cucumber.api package. |
| Confirmed | No official compatibility shim or dual-publish strategy has been announced for the legacy namespace. |
| Likely | The legacy artifacts will be removed after the deprecation window, not retained indefinitely. |
| Uncertain | The exact version that removes cucumber.api varies by module and release train; verify per artifact. |
cucumber.api directly.io.cucumber-compatible build, keep the Cucumber version pinned until it does, or swap the plugin. There is no official bridge for old plugin APIs.io.cucumber APIs behind legacy interfaces can unblock a phased migration, but it adds maintenance cost and should be removed once the cutover completes.Because the removal cutoff is module-specific, confirm the state of each artifact you use rather than assuming a single global version.
cucumber-java, cucumber-junit-platform-engine) to see whether legacy coordinates are still published.# Gradle: look for legacy groupId in the test runtime classpath
./gradlew dependencies --configuration testRuntimeClasspath | grep -i cucumber
# Maven: filter the tree for Cucumber artifacts
mvn dependency:tree -Dincludes=info.cucumber:*
io.cucumber to confirm that the engine, plugins, and reporters load without NoClassDefFoundError.Which specific Cucumber-JVM modules and versions does your project currently declare? The exact legacy cutoff differs by module, so the module list changes whether pinning is a short-term fix or a long-term risk.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.