Document Grails 7 plugin compatibility on Grails 8 - #16141
Conversation
Expand the Grails 8 upgrade guide with symptom-driven migration advice for recently reproduced Grails 7 plugin compatibility failures. Distinguish application workarounds from plugin rebuilds and link the shipped command and plugin lifecycle compatibility behavior. Assisted-by: opencode:gpt-5.6-sol
There was a problem hiding this comment.
Pull request overview
Expands the Grails 8 upgrade guide with symptom-driven guidance for running Grails 7-built plugins on Grails 8, distinguishing application-side workarounds from failures that require a plugin rebuild.
Changes:
- Replaces the prior “known blockers” list with a symptom-based decision tree for common plugin/runtime failure modes.
- Adds detailed subsections covering
Metadataaccess removal, Groovy 4→5 trait/AST bytecode breaks, Jackson 2 dataformat classpath pitfalls, pre-Apacheorg.grailscoordinates, Spring 7HttpHeadersbinary incompatibility, and CLI/plugin lifecycle timing notes. - Adds/repairs internal anchors and cross-references to make the new sections linkable and navigable.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Use the literal Jackson linkage error from the reported failure and keep the Spring HttpEntity migration examples idiomatic for Groovy readers. Assisted-by: opencode:gpt-5.6-sol
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## 8.0.x #16141 +/- ##
==================================================
+ Coverage 52.5503% 52.5524% +0.0021%
Complexity 18391 18391
==================================================
Files 2037 2037
Lines 96498 96498
Branches 16860 16860
==================================================
+ Hits 50710 50712 +2
+ Misses 38353 38351 -2
Partials 7435 7435 🚀 New features to boost your workflow:
|
✅ All tests passed ✅🏷️ Commit: 9ef0225 Learn more about TestLens at testlens.app. |
|
|
||
| Check the https://github.com/apache/grails-core/issues[Grails issue tracker] for the latest status of plugin compatibility. | ||
| * `NoClassDefFoundError` mentioning `com/fasterxml/jackson/databind/exc/InvalidDefinitionException` while creating `OrderedFormContentFilter`: add the BOM-managed Jackson 2 `jackson-databind` dependency described below, then retest the plugin's public behavior. | ||
| * `Could not find org.grails:...:.`: use a plugin version built against `org.apache.grails`, or use narrowly targeted dependency substitution as a temporary migration aid. |
There was a problem hiding this comment.
Should it be mentioned, that org.grails is often pre. Grails 7?
There was a problem hiding this comment.
@sbglasius I am going to skip this for now, since grails-plugin plugins still use org.grails for Grails 8+ plugins.
jdaugherty
left a comment
There was a problem hiding this comment.
We probably should create a plugin specific upgrade guide instead of adding to the already existing Grails 8 upgrade.
Summary
Expand the Grails 8 upgrade guide with symptom-driven guidance for using plugins built for Grails 7.
The new documentation:
Metadata, Jackson 2 dataformats, pre-Apache dependency coordinates, and Spring 7HttpHeadersHolders.grailsApplicationtiming statementCompatibility cases covered
Metadatadynamic and map-style access@Immutablebytecode referencing removedObjectUtilorg.grailscoordinatesHttpHeadersbytecode running against Spring Framework 7doWithSpringcallbacksVerification
./gradlew.bat :grails-doc:publishGuide -x :grails-doc:aggregateGroovydoc --max-workers=13guide/upgrading.htmlgit diff --checkThe mandatory aggregate integration run reached 3,617 tests and reported two unrelated failures:
grails-test-examples-mail: a Windows-only CRLF assertion expectedHello\nWorld!but receivedHello\r\nWorld!; it reproduced in an isolated serial rerungrails-test-examples-scaffolding: a browser test timed out on the welcome page during the full parallel run; the exact spec passed in an isolated serial rerunRelated issues