Skip to content

Document Grails 7 plugin compatibility on Grails 8 - #16141

Merged
jamesfredley merged 2 commits into
apache:8.0.xfrom
jamesfredley:docs/grails-7-plugin-compatibility
Aug 15, 2026
Merged

Document Grails 7 plugin compatibility on Grails 8#16141
jamesfredley merged 2 commits into
apache:8.0.xfrom
jamesfredley:docs/grails-7-plugin-compatibility

Conversation

@jamesfredley

Copy link
Copy Markdown
Contributor

Summary

Expand the Grails 8 upgrade guide with symptom-driven guidance for using plugins built for Grails 7.

The new documentation:

Compatibility cases covered

  • removed Metadata dynamic and map-style access
  • Groovy 4 generic trait field-helper bytecode
  • Groovy 4 AST transformations targeting private trait methods
  • Groovy 4 @Immutable bytecode referencing removed ObjectUtil
  • incomplete Jackson 2 Smile, CBOR, or YAML runtime classpaths
  • versionless dependencies under pre-Apache org.grails coordinates
  • Spring 6 HttpHeaders bytecode running against Spring Framework 7
  • Grails 7 command plugins and retimed doWithSpring callbacks

Verification

  • ./gradlew.bat :grails-doc:publishGuide -x :grails-doc:aggregateGroovydoc --max-workers=13
  • Chromium QA of the generated guide/upgrading.html
    • all six new subsections rendered
    • code examples rendered
    • all seven issue links and four PR links were present
    • all four internal cross-references were clicked and reached visible targets
    • no browser console errors
  • git diff --check
  • mandatory Oracle review: GREEN
  • mandatory Codex review: GREEN
  • Checkstyle, CodeNarc, PMD, and SpotBugs aggregate reports: no violations
  • aggregate unit tests: 12,316 passed, 0 failures

The mandatory aggregate integration run reached 3,617 tests and reported two unrelated failures:

  • grails-test-examples-mail: a Windows-only CRLF assertion expected Hello\nWorld! but received Hello\r\nWorld!; it reproduced in an isolated serial rerun
  • grails-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 rerun

Related issues

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
Copilot AI lite review requested due to automatic review settings August 12, 2026 18:51

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 Metadata access removal, Groovy 4→5 trait/AST bytecode breaks, Jackson 2 dataformat classpath pitfalls, pre-Apache org.grails coordinates, Spring 7 HttpHeaders binary 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.

Comment thread grails-doc/src/en/guide/upgrading/upgrading80x.adoc Outdated
Comment thread grails-doc/src/en/guide/upgrading/upgrading80x.adoc Outdated
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

codecov Bot commented Aug 12, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 52.5524%. Comparing base (fa1e147) to head (9ef0225).

Additional details and impacted files

Impacted file tree graph

@@                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                

see 4 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@testlens-app

testlens-app Bot commented Aug 12, 2026

Copy link
Copy Markdown

✅ All tests passed ✅

🏷️ Commit: 9ef0225
▶️ Tests: 54503 executed
⚪️ Checks: 75/75 completed


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.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should it be mentioned, that org.grails is often pre. Grails 7?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sbglasius I am going to skip this for now, since grails-plugin plugins still use org.grails for Grails 8+ plugins.

@jdaugherty jdaugherty left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We probably should create a plugin specific upgrade guide instead of adding to the already existing Grails 8 upgrade.

@jamesfredley
jamesfredley merged commit 1628a9c into apache:8.0.x Aug 15, 2026
77 of 78 checks passed
@jamesfredley
jamesfredley deleted the docs/grails-7-plugin-compatibility branch August 15, 2026 15:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants