jamesfredley opened a new pull request, #16047: URL: https://github.com/apache/grails-core/pull/16047
## Summary - generate Spring Boot configuration metadata from compiled Groovy and Java configuration classes - preserve curated metadata through standard additional metadata overlays - migrate Cache, Data Binding, JSON Views, Markup Views, and URL Mappings/CORS metadata generation - include generated module metadata in the configuration report documentation pipeline ## Implementation The Groovy path uses a semantic-analysis AST transformation that stores deterministic metadata on each compiled configuration class. The Gradle plugin scans those independent class outputs after compilation, reads Java bytecode without classloading, merges curated overlays, and publishes one standard `META-INF/spring-configuration-metadata.json` resource. This avoids the shared annotation-processor output that caused incremental Groovy compilation problems in #15566. The scanner supports mutable bean properties, inherited local accessors, selected constructor-bound immutable properties, generic constructor types, records, nested groups, constant defaults, source deletion, and deterministic cacheable output. Dynamic Groovy defaults remain omitted unless an overlay supplies an authoritative value. ## Compatibility - preserved all 14 existing groups and all 53 existing properties with no changed names, types, descriptions, defaults, or extension fields - retained curated boxed types and legacy defaults where source inference differs - moved CORS metadata to the URL Mappings module that owns `GrailsCorsConfiguration` - produced nine additional inferred JSON Views properties and new Markup Views metadata - kept exactly one standard metadata resource in each migrated JAR ## Verification - `:grails-configuration-metadata:test` and `:grails-configuration-metadata:codeStyle` - complete `ConfigurationMetadataPluginSpec` TestKit suite, including clean, incremental, edit, deletion, overlay, duplicate, immutable, record/signature, and no-overlay paths - all tests in Cache, Data Binding, JSON Views, Markup Views, URL Mappings, and affected Web Core modules - `ConfigReportCommandSpec` and `:grails-doc:publishGuide -x aggregateGroovydoc` - clean Checkstyle, CodeNarc, PMD, and SpotBugs aggregate reports - semantic zero-loss comparison and generated JAR resource inspection - dual pre-commit and full-branch review gates plus five-lane post-implementation review The repository-wide Windows run also exposed one unrelated pre-existing mail example assertion that compares LF text with CRLF output. All process-level worker failures from that run passed when rerun serially. Closes #15469 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
