You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by ja...@apache.org on 2026/08/02 12:23:17 UTC

(grails-core) branch fix/binddata-null-missing-stale-data updated (62d4aadc22 -> 59ec123ecd)

This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a change to branch fix/binddata-null-missing-stale-data
in repository https://gitbox.apache.org/repos/asf/grails-core.git


    from 62d4aadc22 Merge branch 'fix/binddata-mass-assignment' into fix/binddata-null-missing-stale-data
     add 4c9062e77b Resolve legacyBindableDefault from the raw configuration value
     add 08bf7818e2 Drop the bindable constraints added to the renderer spec models
     add b7ceb5375d Grant native access in CLI and wrapper start scripts
     add 0a726c6500 Replace local StringBuffer usage with StringBuilder
     add ba15d890b5 correcting old javadoc problem
     add 0c63c26a3a Merge pull request #15990 from apache/refactor/legacy-jdk-types
     add d1a3f69dc7 Declare processResources ReplaceTokens values as task inputs
     add eed1e36d0d Merge pull request #16006 from codeconsole/processresources-token-inputs
     add 52bf74ee81 Merge branch '8.0.x' into fix/forge-cli-native-access
     add 76d9f18659 Merge pull request #15989 from codeconsole/fix/forge-cli-native-access
     add 36ad682bdf Split CLI dependencies from the runtime classpath
     add 6fdfaf8675 Remove explicit console dependency
     add e1bac4aa61 Adjust test configuration
     add 237cf03945 Move grailsCli related gradle configuration to a single gradle plugin
     add 01ddd85d57 Cleanup code style
     add b4c8828cfa Functional test app was missing functional dependency substitution
     add 45632e28f5 Ensure hibernate5 bom is used consistently for hibernate5 projects
     add 8043852418 Merge branch '8.0.x' into fix/split-cli-dependencies
     add ea3064a5d9 Fix cli gradle capabilities from being published
     add 329cc6a703 CommandFactoriesTransformation should be able to register commands compiled from src/cli sources.
     add c6739f408e Replace ambgious commands
     add 1fd7f7d405 Merge branch '8.0.x' into fix/split-cli-dependencies
     add 42ef1ac1c6 Wire same-build CLI companions via project capability + cover discovery
     add a441ac3132 Fix factories dedup, BOM companion constraints, and companion build identity
     add 82532d4ee8 Support customized cli companion coordinates end to end
     add 773152144d Document the upgrade impact of the CLI split
     add d6d49e85f3 Fix the command arguments example in the custom-commands guide
     add d1e4af1162 Merge pull request #15948 from apache/fix/split-cli-dependencies
     add e64bd9d80e Enforce HTTPS for wrapper remote repositories
     add fecd1172b3 Address wrapper redirect review feedback
     add ac9bbc91e0 Address wrapper repository review feedback
     add 6689ebf5eb Align wrapper and Forge repository HTTPS validation
     add 2ee817429e Merge remote-tracking branch 'origin/8.0.x' into fix/wrapper-https-enforcement
     add e8ce969643 Harden wrapper HTTPS enforcement per review feedback
     add d42672802c Reject malformed remote wrapper repository overrides
     add a1ea4c8e9f Preserve repository fallback and drive-relative local repos
     add 8be73fd71f Align Forge Windows repository path handling with the wrapper
     add 6704c1d56b Fix OperatorWrap style in GrailsWrapperRepo
     add 6723a29349 feedback - simplify wrapper windows handling, support alises, adding tests, and making sure all implementations work the same
     add 26d1c1036b Merge pull request #15809 from apache/fix/wrapper-https-enforcement
     add 38902374f6 Convert remaining plugin descriptors from doWithSpring() to beanRegistrar()
     add 373528b3b7 Fix functional-test regressions in the bean-registrar conversions
     add f80b1cf8fe Address review feedback on the bean-registrar conversions
     add 3dc84a7b17 Auto-configure the controllers exceptionHandler default
     add 285a4f31d1 Auto-configure the cache plugin's default cache manager and key generator
     add 6cf1eacf9e Merge branch '8.0.x' into refactor/bean-registrars
     add fc6ac88995 Address review feedback: mirror boot order in defineBeans, gate cache auto-config, guard redis definitions
     add 7977c93ed7 Merge branch '8.0.x' into refactor/bean-registrars
     add 76bdd8c079 Address matrei review feedback
     add 3a1a6f82d8 Merge pull request #15994 from codeconsole/refactor/bean-registrars
     add bee4a4b1b0 Bump managed jQuery webjar to 4.0.0 in the BOM
     add ae8fcdcfb0 Add show-by-id and navbar controller filter to the create-app welcome page
     add ea78cf8bb9 Document the jQuery 4.0.0 webjar upgrade in the Grails 8 upgrade guide
     add 0e28a4d59f Fix welcome-page spinner ajax binding and touch autofocus
     add 638e9871dc Sort the welcome-page language selector by autonym
     add bdcb488a36 Use a fixed ROOT collator for the language selector ordering
     add f1cfb19bf4 Sort available locales with a ROOT collator in AvailableLocaleResolver
     add 18268189fe Add render modes and a body form to g:localeSelect
     add 485ff7a452 Use the g:localeSelect body form in the create-app welcome page
     add 3af80d727e Simplify the jQuery pin-back note in the 8.0.x upgrade guide
     add 81a9f3f4e0 Make the create-app welcome page artefact list switchable
     add 4174b63ebe Surface runtime internals on the create-app welcome page
     add cb95eb5f59 Show the request filter pipeline on the create-app welcome page
     add d18ca672f8 Stack the welcome-page cards in two columns to remove dead space
     add 0223d138a0 Restyle the spring-security login and denied pages with Bootstrap
     add cc06c5dca7 Bring spring-security i18n to locale parity with create-app
     add d7b4932afa Add Traditional Chinese (zh_TW) create-app welcome translations
     add a056c21434 Rewrite the spring-security-ui plugin on jQuery 4 and Bootstrap 5
     add a350e53822 Convert the remaining spring-security views and templates to Bootstrap
     add b506a5b067 Integrate the spring-security-ui screens into the host application layout
     add a1d5f25f4c Respect allowedMethods on the create-app controller listings
     add dce86c62d0 Show POST-only controllers disabled in the navbar dropdown
     add dbedd0108d Invoke POST-only controllers through a form in the listings
     add 1fa628162f Document the spring-security-ui Bootstrap rewrite in the upgrade guide
     add ebcf71697e Update the spring-security test apps and fixtures for the Bootstrap rewrite
     add c312e5e9df Fix spring-security-ui functional tests after Bootstrap rewrite
     add 7750a3c81a Remove legacy main.css from spring-security-ui test apps
     add 94993c8701 Fix locale selection, active matching, zh_TW forge wiring and missing i18n keys
     add ae336d9aab Add a URL Mappings panel with an interactive resolver to the welcome page
     add 80f26ff334 Merge branch '8.0.x' into feat/create-app-ui
     add 94e3f4bc18 Link framework tag libraries to their groovydoc on the welcome page
     add 041c889826 Group welcome-page domains by plugin with opt-in row counts
     add e99e27139b Merge branch '8.0.x' into feat/create-app-ui
     add 47e8ebe933 Address review feedback on localeSelect, welcome diagnostics and s2ui buttons
     add 88814b4c5d Merge remote-tracking branch 'upstream/8.0.x' into feat/create-app-ui
     add 8a8d5c114f Add a dual-mode sign-in affordance to the create-app navbar
     add 4e348c3949 Add a Spring Boot Starter Security feature to Grails Forge
     add cbfce2fc93 Show full values as tooltips on the welcome status cards
     add 47da75f9fa Add Grails Spring Security plugin and UI plugin features to Grails Forge
     add e2d83f7ba2 Align the Grails Spring Security plugin feature with the UI flavor's domain model
     add 9aca8df30f Harden the security features' generated runtime after live verification
     add 97df5387b8 Make the Spring Security UI feature supplemental to the core plugin feature
     add b21c25d753 Replace the login password-toggle emoji with Bootstrap icon toggles on every login UI
     add f648df7b53 Render navActions after language and theme in the navbar
     add d98fe6573b Expose feature relationship metadata through the Forge API
     add 89338b9227 Merge pull request #15987 from codeconsole/feat/create-app-ui
     add 7f5c8675bb Fix afterEvaluate race between applyGrailsBom and GrailsCliGradlePlugin
     add 9f751d16be Fix review feedback: preserve plugin identity/idempotency, add regression test
     add 7804f4b011 Merge pull request #16009 from codeconsole/fix/bom-cli-afterEvaluate-ordering
     add 2a32b9661e Simplify forge deployments to speed up release times
     add 2a9adf8619 Remove TestLens setup from forge deploy workflows since they run no tests
     add 5c285ef03a Merge pull request #15984 from apache/ci/faster-forge-deploys
     add fced1db76c Update the grails-gradle-publish plugin to the staged 1.0.0-M2 version
     add ce1884f8f7 Merge pull request #16012 from apache/chore/update-publish-plugin
     add abdd44767d fix grails-core-cli artifact checksums
     add 6b60b72e13 Rewrite the sbom plugin to handle both the cli + main artifacts lazily
     add a98e197add Add tests
     add dfebb9a261 Add sbom verification to verify
     add a162ebb524 build: change logger level from lifecycle to info for sourcesJar task creation
     add 0e16a24661 Merge pull request #16022 from apache/cleanup-build-log
     add fa30af085b Fix sbom exemptions for cli split
     add bfd17896e9 Fix task resolution in grails wrapper cli
     add e53459c0b5 build: update checkstyle and codenarc versions
     add 5cea1fbc95 style: codenarc issues after update
     add 4d3107d841 Merge pull request #16013 from apache/update-codestyle-libs
     add 6d1acaddb6 Fix help resolution & speed up dependency resolution
     add 15938592c7 Document Spring HTTP interface clients
     add e7bad9c74a Merge pull request #15996 from apache/docs/http-exchange-clients
     add 136f16d7d1 Document Spring Boot structured logging
     add 0430ed2d37 Potential fix for pull request finding
     add e2ee9746ee Potential fix for pull request finding
     add f3da7a2312 Merge pull request #15997 from apache/docs/structured-logging
     add c10e485773 Document continuous test mode
     add 0cd61e1cdd Potential fix for pull request finding
     add 2d08123daf Merge pull request #15999 from apache/docs/continuous-testing
     add 75f02aaff8 Enable CodeNarc empty catch checks
     add a082291aa9 Rename intentional empty-catch parameters in grails-gradle-model
     add 33efc93093 Merge remote-tracking branch 'origin/8.0.x' into build/empty-catch-codenarc
     add 4e7cd8762f Address review feedback on EmptyCatchBlock PR
     add 1817a7d7b4 Merge pull request #15991 from apache/build/empty-catch-codenarc
     add 44d5cfafe0 Characterize plugin registry load order and lookup contract
     add 0b53a85ae4 Use find/count for null-safe plugin lookup in registry contract spec
     add c6ce3fe8bd Merge pull request #16004 from apache/test/plugin-registry-contract
     add cb35496301 [skip ci] Release v8.0.0-M4
     add b11fa75cb2 [skip ci] Bump version to 8.0.0-SNAPSHOT
     add 743730dc3b Merge pull request #16049 from apache/merge-back-8.0.0-M4
     add 7388284e4f [skip ci] Release v7.2.1
     add f9e4572136 [skip ci] Bump version to 7.2.2-SNAPSHOT
     add e72c56bccf Merge pull request #15982 from apache/merge-back-7.2.1
     add bc80c60f7f [skip ci] Release v7.1.4
     add ca1def5974 [skip ci] Bump version to 7.1.5-SNAPSHOT
     add 0496370184 Merge pull request #15981 from apache/merge-back-7.1.4
     add c9c3be92a8 [skip ci] Release v7.0.14
     add c63d23e428 [skip ci] Bump version to 7.0.15-SNAPSHOT
     add dba8810e50 Merge pull request #15980 from apache/merge-back-7.0.14
     add 876db2e1a5 Prevent multiple publishing from running at the same time
     add 7eb9a5e98d Merge pull request #15988 from apache/ci/document-publishing-limit
     add ee4d85d65f Bump org.testcontainers:postgresql in /grails-forge
     add 8f2f6cf1e6 Merge pull request #15639 from apache/dependabot/gradle/grails-forge/7.0.x/org.testcontainers-postgresql-1.21.4
     add 23c2c586af Update Log4j to 2.25.5 and document unfixed Jansi CVE
     add ac08770cff Merge pull request #16043 from apache/deps/cve-log4j-jansi-7.0.x
     add b8df2131e9 Remove push trigger due to api limits
     add 6e463ae14b Merge branch '7.0.x' into 7.1.x
     add 95c0db6d4a Merge branch '7.1.x' into 7.2.x
     add 63048d463e Merge branch '7.2.x' into 8.0.x
     add 87ce649d52 build: try to fix dependency resolution after merge-up
     add 17d78a74e4 Merge pull request #16056 from apache/try-fix-dependencies
     add b2b92f34cd localeSelect: add type="dropdown" and a menu-cased name, and titlecase autonyms
     add 7e0316c71c localeSelect: keep the current query string when switching language
     add 3c5b1b9045 Merge pull request #16053 from codeconsole/locale-autonym-titlecase
     add 4aa9a0b51d Add compile-time check for GORM query strings flattened from GString
     add 46c4ba2486 Track GString origin through variable aliasing, not just literal coercion
     add cceff551fb Extend query safety check with branch-sensitivity fix and two new warnings
     add d3e1ea8485 Add protectSqlInjectionAttacks opt-out for the global query safety check
     add 6e0a8bafe0 Adopt @RestoreSystemProperties in GlobalGormQuerySafetyASTTransformationSpec
     add cb3a5753c7 Detect inline .toString()/cast flattening at the GORM query call site
     add f1fbe86956 Merge pull request #15971 from apache/feat/gorm-query-safety-ast-check
     add e0e7dd3f2a Added ternary operator formatting in the groovy-developer skill
     add 2bf0cf01f8 Merge pull request #16055 from gsartori/groovy-developer-ternary-operator
     add 09c42aebe4 Bump testlens-app/setup-testlens from 1.9.2 to 1.9.3
     add 2781979e92 Merge pull request #16062 from apache/dependabot/github_actions/testlens-app/setup-testlens-1.9.3
     add 52b27dfdc3 GrailsUtil: honor stackTraceFiltererClass and logFullStackTraceOnFilter
     add 55a45f5871 fix checkstyle ImportOrder: separate spring.beans import group
     add 5577618630 GrailsUtil: bootstrap-hook init via GrailsExceptionResolver
     add a23e03d961 Address review feedback from matrei
     add c6610c1567 Move stack filterer init to bootstrap phase, address jdaugherty review
     add c2db0eddb0 Trigger GitHub mergeability recompute (no content change)
     add 0702d7bb88 Merge branch '8.0.x' into 7.1.x-grailsutil-honor-filterer-config
     add cbfe2fc8e9 Address review: Class-valued filterer config, ClassLoader, defensiveness
     add 4000654c8e Address borinquenkid review: log the wrong-type filterer fallback
     add 87d9eb40e6 Merge pull request #15666 from codeconsole/7.1.x-grailsutil-honor-filterer-config
     add 5db496701c refactor: clean up GlobalGrailsClassInjectorTransformation
     add 5e9ce015d9 Add tests closing codecov gaps in GlobalGrailsClassInjectorTransformation
     add 4db83b3436 test: remove redundant javadoc
     add 31875ec0a1 another iteration after review feedback
     add 7860ec1d19 test: add more coverage for `GlobalGrailsClassInjectorTransformation`
     add b32e9d1907 Merge branch '8.0.x' into refactor-global-injector-trans
     add 4267e77b2f test: reset static collections in cleanup()
     add 8ec2dad08d Merge branch '8.0.x' into refactor-global-injector-trans
     add eb90eb5c77 test: verify log warning on existing malformed plugin xml file
     add 7b35c0f4b0 fix: do not use `getClass()` in static method
     add 722040412b refactor: minor
     add 300b01f885 test: align on using log appender in tests and some cleanup
     add 43366f1f73 test: existing resource when testing `grails-plugin.xml` update
     add c4bbf11593 build: whitespace
     add 8fe145514c refactor: enhance plugin XML generation and improve error handling
     add cdad075730 refactor: make pending lists an internal instance concern
     add 4fe23d49c0 refactor: another iteration after feedback
     add 48e38bb1a0 refactor: extract test log capturing to reusable class
     add c3b60c8c01 test: add more coverage
     add 7bcab161f3 fix: logic to handle plugin excludes over source units
     add bad541ba13 fix: correct error generation in ast transform
     add d86a6957e9 fix: defer resources when malformed plugin descriptor lacks metadata
     add fbc9c6ee81 fix: omit unavailable Grails version from plugin metadata
     add a55d2ad186 refactor: move LogCapture to textFixtures source set
     add aba16ce46a fix: LogCapture improvements
     add d1c8d0e439 test: add deterministic test logging configuration
     add fd87c31e28 fix: clarify nullable contracts
     add 7587013983 refactor: clarify plugin XML update helper names
     add b341dc5b75 fix: make Grails version fallback coverage deterministic
     add 945b185a17 chore: clarify logback-classic dependency in test fixtures
     add a72fa18d3e style: re-order methods more logically
     add f924d0c9d7 docs: clarify plugin XML update failure handling
     add b5a15be028 test: improve test isolation and clarity by resetting trait injectors in setup and cleanup
     add ec9a530c7d fix: skip plugin XML generation after validation failure
     add c083ad1844 fix: refresh plugin metadata without new artefacts
     add f55731a748 Merge pull request #16042 from apache/refactor-global-injector-trans
     add d5335f4a9e Merge branch '8.0.x' into fix/binddata-mass-assignment
     add 94067b6c1f Remove logback-spring.xml from the app skeleton
     add 81e26bed44 Stop generating logback-spring.xml in Grails Forge
     add 0eea153db8 feat: add opt-in Logback Configuration feature to Grails Forge
     add ed420b14a8 docs: document logback-spring.xml generation change and Logback Configuration feature
     add 2fac042396 Merge remote-tracking branch 'apache/8.0.x' into remove-skeleton-logback-spring-xml
     add 3f3732e681 docs: document zero-XML per-environment logging via the environments block
     add 45968fd538 Merge branch '8.0.x' into remove-skeleton-logback-spring-xml
     add 298cd594ad Keep generating logback-spring.xml by default; make zero-config the opt-in Forge feature
     add d2422cdab8 Simplify generated logback-spring.xml: compose Spring Boot defaults, INFO root level
     add 2b1902fbc2 Docs: fix logback-spring.xml example and scope zero-config vs generated-file behavior
     add 8395a4775d Merge branch '8.0.x' into remove-skeleton-logback-spring-xml
     add 537614e383 Stop generating logback-spring.xml by default; add opt-in Logback Configuration feature
     add a62acb7a9d Docs: expand config-driven logging coverage in the logging reference
     add 3f378fae04 Merge remote-tracking branch 'upstream/8.0.x' into remove-skeleton-logback-spring-xml
     add 07242bf9bf Merge remote-tracking branch 'upstream/8.0.x' into remove-skeleton-logback-spring-xml
     add 66a25164f3 Merge pull request #15757 from codeconsole/remove-skeleton-logback-spring-xml
     add 9a8a9a11dd Restore backwards compatibility for Grails 7 command plugins on Grails 8
     add 7831d7dfa2 Merge remote-tracking branch 'origin/8.0.x' into feat/8.0.x-legacy-command-compat
     add 71f73fc7a7 Address review feedback and expand backwards-compatibility test coverage
     add be98c6228a Deduplicate legacy command classes across classloaders and fix docs
     add 5069bef718 Use @Slf4j annotation for ApplicationContextCommandRegistry logger
     add d1fe4956a6 Isolate Grails 7 command compat into execution-only grails-core-cli-legacy
     add 7b53bcc56b Harden legacy command provider: single name resolution and loud linkage failures
     add d64cef31ad Merge origin/8.0.x into feat/8.0.x-legacy-command-compat
     add c798c93778 Add default-on legacyCommandSupport flag beside cliAutoProvision
     add cd6cbb81bb Stop inventing named Gradle tasks for legacy application commands
     add 3587ed6478 Prove Grails 7 Groovy 4 precompiled application-command compatibility
     add 1d8edac99e Fix CodeNarc style in legacy command compatibility layer
     add 116b0efab3 Default legacyCommandSupport to false (opt-in Grails 7 bridge)
     add 75ed39351b Harden legacy command compatibility diagnostics
     add 1ed1a30a04 Move legacy command compatibility tests into an end-to-end build
     add e1b93a6927 Merge pull request #16059 from jdaugherty/test/8.0.x-legacy-command-e2e
     add b5d87ae5ea Merge branch '8.0.x' into feat/8.0.x-legacy-command-compat
     add 08121444e3 chore: add license header to end-to-end properties
     add ed1961adfc test: capture application command diagnostics from logger
     add bdb98a6636 test: capture StackTrace filterer emissions via LogCapture
     add 301b40c20a Merge pull request #16011 from apache/feat/8.0.x-legacy-command-compat
     add 57883c41e4 build: allow excluding the Spring DM example on an unpublished branch version
     add 4fdb88b163 fix: defer compile-classpath probes out of GroovyCompile task configuration
     add 457f2fb86d Merge pull request #16076 from codeconsole/fix/eager-classpath-resolve-8.0.x
     add 5d024d71b9 Issues #16060 Docs: Mixed-up version numbers
     add ebe66140cf Fix: Add urlencoding to link to Grails BOM in docs
     add 2e2ce06e9f Merge pull request #16074 from apache/issues-16060-Upgrade-docs-mixed-up-version-numbers
     add cd4202bfa7 Merge branch '8.0.x' into fix/binddata-mass-assignment
     add 59ec123ecd Merge branch 'fix/binddata-mass-assignment' into fix/binddata-null-missing-stale-data

No new revisions were added by this update.

Summary of changes:
 .agents/skills/groovy-developer/SKILL.md           |   10 +
 .github/workflows/end-to-end.yml                   |  144 +++
 .github/workflows/forge-deploy-next.yml            |   45 +-
 .github/workflows/forge-deploy-prev-snapshot.yml   |   45 +-
 .github/workflows/forge-deploy-prev.yml            |   45 +-
 .github/workflows/forge-deploy-release.yml         |   65 +-
 .github/workflows/forge-deploy-snapshot.yml        |   45 +-
 .github/workflows/gradle.yml                       |   30 +-
 .github/workflows/groovy-joint-workflow.yml        |    4 +-
 .github/workflows/rat.yml                          |    2 +-
 .github/workflows/release.yml                      |    6 +
 .github/workflows/sitemesh2.yml                    |    4 +-
 .github/workflows/vulnerability-scan.yml           |    5 -
 AGENTS.md                                          |    1 +
 INSTALL                                            |    3 +-
 .../apache/grails/buildsrc/PublishPlugin.groovy    |   42 +-
 .../org/apache/grails/buildsrc/SbomPlugin.groovy   |  142 ++-
 .../grails/buildsrc/VulnerabilityScanPlugin.groovy |    5 +
 .../codenarc/codenarc.groovy                       |    4 +
 .../grails/buildsrc/PublishPluginSpec.groovy       |  113 ++
 .../apache/grails/buildsrc/SbomPluginSpec.groovy   |  100 ++
 build.gradle                                       |    7 +
 dependencies.gradle                                |   15 +-
 end-to-end/README.md                               |  111 ++
 end-to-end/build.gradle                            |   41 +
 .../gradle.properties                              |   18 +-
 .../gradle/wrapper/gradle-wrapper.jar              |  Bin
 .../gradle/wrapper/gradle-wrapper.properties       |    9 +
 end-to-end/gradlew                                 |  248 +++++
 end-to-end/gradlew.bat                             |   82 ++
 .../legacy-commands-plugin}/build.gradle           |   28 +-
 .../legacy/commands/plugin/GreetingService.groovy  |    8 +-
 .../commands/plugin/HelloLegacyAppCommand.groovy   |   33 +-
 .../plugin/HelloLegacyGrailsCommand.groovy         |   33 +-
 .../plugin/LegacyCommandsPluginGrailsPlugin.groovy |   29 +-
 .../src/main/resources/META-INF/grails.factories   |   15 +
 .../src/main/scripts/hello-legacy-script.groovy    |   12 +-
 .../legacy-commands}/build.gradle                  |   77 +-
 .../grails-app/conf/application.yml                |   41 +
 .../legacy-commands}/grails-app/conf/logback.xml   |    0
 .../controllers/legacycommands/UrlMappings.groovy  |   16 +-
 .../init/legacycommands/Application.groovy         |   11 +-
 .../services/legacycommands/GreetingService.groovy |   10 +-
 ...egacyCommandCompatibilityIntegrationSpec.groovy |  236 +++++
 end-to-end/legacy-g7-command-plugin/.sdkmanrc      |    4 +
 end-to-end/legacy-g7-command-plugin/build.gradle   |   83 ++
 .../gradle/wrapper/gradle-wrapper.jar              |  Bin
 .../gradle/wrapper/gradle-wrapper.properties       |    6 +
 end-to-end/legacy-g7-command-plugin/gradlew        |  248 +++++
 end-to-end/legacy-g7-command-plugin/gradlew.bat    |   82 ++
 .../legacy-g7-command-plugin/settings.gradle       |   60 ++
 .../g7/commands/HelloDerivedNameCommand.groovy     |   33 +-
 .../g7/commands/HelloG7PrecompiledCommand.groovy   |   31 +-
 .../HelloG7PrecompiledGrailsCommand.groovy         |   29 +-
 .../src/main/resources/META-INF/grails.factories   |    1 +
 end-to-end/settings.gradle                         |  112 ++
 etc/bin/verify-jar-artifacts.sh                    |   14 +
 gradle-bootstrap/build.gradle                      |   47 +-
 gradle.properties                                  |    4 +-
 gradle/cli-companion-bom-constraints.gradle        |   41 +
 gradle/functional-test-config.gradle               |   11 +
 gradle/publish-root-config.gradle                  |    1 +
 .../web/async/ControllersAsyncGrailsPlugin.groovy  |   19 +-
 .../async/ControllersAsyncGrailsPluginSpec.groovy} |   34 +-
 grails-bom/base/build.gradle                       |   20 +
 grails-bom/default/build.gradle                    |    4 +
 grails-bom/hibernate5-micronaut/build.gradle       |    4 +
 grails-bom/hibernate5/build.gradle                 |    4 +
 grails-bom/hibernate7-micronaut/build.gradle       |    4 +
 grails-bom/hibernate7/build.gradle                 |    4 +
 grails-bom/micronaut/build.gradle                  |    4 +
 .../grails/plugin/cache/CacheGrailsPlugin.groovy   |   28 +-
 .../cache/GrailsCacheAutoConfiguration.groovy      |   69 ++
 ...rk.boot.autoconfigure.AutoConfiguration.imports |    1 +
 .../plugin/cache/CacheGrailsPluginSpec.groovy      |   73 ++
 .../cache/GrailsCacheAutoConfigurationSpec.groovy  |  108 ++
 .../common/compiler/GroovyTransformOrder.groovy    |   15 +-
 grails-console/build.gradle                        |   10 +
 .../GrailsApplicationContextCommandRunner.groovy   |   57 +-
 .../ui/script/GrailsApplicationScriptRunner.groovy |    3 +-
 ...railsApplicationContextCommandRunnerSpec.groovy |  100 ++
 .../controller/support/ResponseRenderer.groovy     |    3 +-
 .../ControllerBeanDefinitionsPostProcessor.groovy  |  100 ++
 .../controllers/ControllersAutoConfiguration.java  |   14 +
 .../web/controllers/ControllersGrailsPlugin.groovy |   51 +-
 ...ntrollerBeanDefinitionsPostProcessorSpec.groovy |   99 ++
 .../ControllersAutoConfigurationSpec.groovy        |   80 +-
 .../controllers/ControllersGrailsPluginSpec.groovy |   61 ++
 .../converters/ConvertersGrailsPlugin.groovy       |   37 +-
 .../converters/ConvertersGrailsPluginSpec.groovy   |   65 ++
 .../build.gradle                                   |   37 +-
 .../grails/dev/commands/ApplicationCommand.groovy  |    2 +
 .../grails/dev/commands/ExecutionContext.groovy    |    2 +
 .../dev/commands/GrailsApplicationCommand.groovy   |    4 +
 .../dev/commands/io/FileSystemInteraction.groovy   |    4 +-
 .../commands/io/FileSystemInteractionImpl.groovy   |    2 +
 .../dev/commands/template/TemplateException.groovy |   19 +-
 .../dev/commands/template/TemplateRenderer.groovy  |    2 +
 .../commands/template/TemplateRendererImpl.groovy  |    5 +-
 .../compat/LegacyApplicationCommandAdapter.groovy  |   90 ++
 .../compat/LegacyApplicationCommandProvider.groovy |  163 +++
 .../main/resources/META-INF/grails-cli.factories   |   16 +
 .../cli/LegacyCommandRegistryLoadingSpec.groovy    |  601 +++++++++++
 .../LegacyApplicationCommandAdapterSpec.groovy     |  107 ++
 grails-core/build.gradle                           |   29 +-
 .../grails/core/cli}/ApplicationCommand.groovy     |    3 +-
 .../core/cli/ApplicationCommandDiagnostics.groovy  |   87 ++
 .../ApplicationCommandFactoryKeyProvider.groovy    |   16 +-
 .../core/cli/ApplicationCommandProvider.groovy}    |   18 +-
 .../core/cli/ApplicationCommandRegistrar.groovy}   |   18 +-
 .../core/cli/ApplicationCommandTargetAware.groovy  |   14 +-
 .../cli/ApplicationContextCommandRegistry.groovy   |  256 +++++
 .../grails/core/cli}/ConfigReportCommand.groovy    |    2 +-
 .../grails/core/cli}/ExecutionContext.groovy       |    3 +-
 .../core/cli}/GrailsApplicationCommand.groovy      |   10 +-
 .../compiler/CommandFactoriesTransformation.groovy |  115 ++
 .../core/cli}/io/FileSystemInteraction.groovy      |    3 +-
 .../core/cli}/io/FileSystemInteractionImpl.groovy  |    3 +-
 .../core/cli}/template/TemplateException.groovy    |    2 +-
 .../core/cli}/template/TemplateRenderer.groovy     |    2 +-
 .../core/cli}/template/TemplateRendererImpl.groovy |    9 +-
 .../cli/resources/META-INF/grails-cli.factories    |   18 +
 ...org.codehaus.groovy.transform.ASTTransformation |    1 +
 .../boot/config/GrailsAutoConfiguration.groovy     |    4 +-
 .../boot/config/tools/ClassPathScanner.groovy      |    2 +-
 .../ApplicationContextCommandRegistry.groovy       |   57 -
 .../PersistenceContextInterceptorExecutor.groovy   |    3 +-
 .../src/main/groovy/grails/util/GrailsUtil.java    |   42 +-
 .../core/GrailsBootstrapRegistryInitializer.java   |  139 +++
 .../compiler/injection/FactoriesFileWriter.groovy  |  140 +++
 .../GlobalGrailsClassInjectorTransformation.groovy |  745 ++++++++-----
 .../core/exceptions/DefaultErrorsPrinter.groovy    |    9 +-
 .../core/io/support/GrailsFactoriesLoader.groovy   |   83 +-
 .../org/grails/plugins/support/WatchPattern.groovy |    3 +-
 ...tGrailsPluginManagerRegistryContractSpec.groovy |  152 +++
 .../plugins/DefaultGrailsPluginManagerSpec.groovy  |  140 +--
 .../grails/util/GrailsUtilStackFiltererSpec.groovy |  163 +++
 .../GrailsBootstrapRegistryInitializerSpec.groovy  |  295 ++++++
 .../core/cli/ApplicationCommandProviderSpec.groovy |  822 +++++++++++++++
 .../core/cli}/ConfigReportCommandSpec.groovy       |    2 +-
 .../CommandFactoriesTransformationSpec.groovy      |   61 ++
 .../grails/core/plugins/PluginDiscoverySpec.groovy |   98 +-
 .../injection/FactoriesFileWriterSpec.groovy       |  124 +++
 ...balGrailsClassInjectorTransformationSpec.groovy |  749 +++++++++++--
 .../reporting/StackTraceFiltererSpec.groovy        |   95 +-
 .../test/resources/META-INF/grails-cli.factories   |   16 +
 grails-core/src/test/resources/logback-test.xml    |   22 +
 .../grails/core/testing/support/LogCapture.groovy  |   99 ++
 .../grails/gorm/graphql/GraphQLEntityHelper.groovy |    4 +-
 .../property/impl/PersistentGraphQLProperty.groovy |    2 +-
 .../DefaultGraphQLDomainPropertyManager.groovy     |    2 +-
 .../graphql/plugin/GormGraphqlGrailsPlugin.groovy  |  138 ++-
 .../plugin/GormGraphqlGrailsPluginSpec.groovy      |   82 ++
 .../AbstractHibernateGormInstanceApi.groovy        |    4 +-
 .../HibernateConnectionSourceSettings.groovy       |    2 +-
 .../hibernate/support/HibernateRuntimeUtils.groovy |    3 +-
 grails-data-hibernate5/dbmigration/build.gradle    |   37 +-
 ...plicationContextDatabaseMigrationCommand.groovy |    4 +-
 .../cli}/DatabaseMigrationCommand.groovy           |    2 +-
 .../cli}/DbmChangelogSyncCommand.groovy            |    4 +-
 .../cli}/DbmChangelogSyncSqlCommand.groovy         |    4 +-
 .../dbmigration/cli}/DbmChangelogToGroovy.groovy   |    2 +-
 .../cli}/DbmClearChecksumsCommand.groovy           |    4 +-
 .../dbmigration/cli}/DbmCreateChangelog.groovy     |    2 +-
 .../dbmigration/cli}/DbmDbDocCommand.groovy        |    4 +-
 .../dbmigration/cli}/DbmDiffCommand.groovy         |    4 +-
 .../dbmigration/cli}/DbmDropAllCommand.groovy      |    4 +-
 .../cli}/DbmFutureRollbackCountSqlCommand.groovy   |    4 +-
 .../cli}/DbmFutureRollbackSqlCommand.groovy        |    4 +-
 .../cli}/DbmGenerateChangelogCommand.groovy        |    4 +-
 .../cli}/DbmGenerateGormChangelogCommand.groovy    |    4 +-
 .../dbmigration/cli}/DbmGormDiffCommand.groovy     |    4 +-
 .../dbmigration/cli}/DbmListLocksCommand.groovy    |    4 +-
 .../cli}/DbmMarkNextChangesetRanCommand.groovy     |    4 +-
 .../cli}/DbmMarkNextChangesetRanSqlCommand.groovy  |    4 +-
 .../cli}/DbmPreviousChangesetSqlCommand.groovy     |    4 +-
 .../dbmigration/cli}/DbmReleaseLocksCommand.groovy |    4 +-
 .../dbmigration/cli}/DbmRollbackCommand.groovy     |    4 +-
 .../cli}/DbmRollbackCountCommand.groovy            |    4 +-
 .../cli}/DbmRollbackCountSqlCommand.groovy         |    4 +-
 .../dbmigration/cli}/DbmRollbackSqlCommand.groovy  |    4 +-
 .../cli}/DbmRollbackToDateCommand.groovy           |    4 +-
 .../cli}/DbmRollbackToDateSqlCommand.groovy        |    4 +-
 .../dbmigration/cli}/DbmStatusCommand.groovy       |    4 +-
 .../dbmigration/cli}/DbmTagCommand.groovy          |    4 +-
 .../dbmigration/cli}/DbmUpdateCommand.groovy       |    4 +-
 .../dbmigration/cli}/DbmUpdateCountCommand.groovy  |    4 +-
 .../cli}/DbmUpdateCountSqlCommand.groovy           |    4 +-
 .../dbmigration/cli}/DbmUpdateSqlCommand.groovy    |    4 +-
 .../dbmigration/cli}/DbmValidateCommand.groovy     |    4 +-
 .../cli}/ScriptDatabaseMigrationCommand.groovy     |    2 +-
 .../commands}/dbm-changelog-to-groovy.groovy       |    2 +-
 .../META-INF/commands}/dbm-create-changelog.groovy |    2 +-
 .../databasemigration/DbUpdateCommandSpec.groovy   |    6 +-
 .../DatabaseMigrationGrailsPlugin.groovy           |   17 +-
 ...ationContextDatabaseMigrationCommandSpec.groovy |    6 +-
 .../cli}/DatabaseMigrationCommandConfigSpec.groovy |    2 +-
 .../cli}/DatabaseMigrationCommandSpec.groovy       |    2 +-
 .../cli}/DbmChangelogSyncCommandSpec.groovy        |    4 +-
 .../cli}/DbmChangelogSyncCommandSqlSpec.groovy     |    4 +-
 .../cli}/DbmClearChecksumsCommandSpec.groovy       |    4 +-
 .../dbmigration/cli}/DbmDiffCommandSpec.groovy     |    4 +-
 .../dbmigration/cli}/DbmDropAllCommandSpec.groovy  |    4 +-
 .../DbmFutureRollbackCountSqlCommandSpec.groovy    |    4 +-
 .../cli}/DbmFutureRollbackSqlCommandSpec.groovy    |    4 +-
 .../cli}/DbmGenerateChangelogCommandSpec.groovy    |    4 +-
 .../DbmGenerateGormChangelogCommandSpec.groovy     |    4 +-
 .../dbmigration/cli}/DbmGormDiffCommandSpec.groovy |    4 +-
 .../cli}/DbmListLocksCommandSpec.groovy            |    4 +-
 .../cli}/DbmMarkNextChangesetRanCommandSpec.groovy |    4 +-
 .../DbmMarkNextChangesetRanSqlCommandSpec.groovy   |    4 +-
 .../cli}/DbmPreviousChangesetSqlCommandSpec.groovy |    4 +-
 .../cli}/DbmReleaseLocksCommandSpec.groovy         |    4 +-
 .../dbmigration/cli}/DbmRollbackCommandSpec.groovy |    4 +-
 .../cli}/DbmRollbackCountCommandSpec.groovy        |    4 +-
 .../cli}/DbmRollbackCountSqlCommandSpec.groovy     |    4 +-
 .../cli}/DbmRollbackSqlCommandSpec.groovy          |    4 +-
 .../cli}/DbmRollbackToDateCommandSpec.groovy       |    4 +-
 .../cli}/DbmRollbackToDateSqlCommandSpec.groovy    |    4 +-
 .../dbmigration/cli}/DbmStatusCommandSpec.groovy   |    4 +-
 .../dbmigration/cli}/DbmUpdateCommandSpec.groovy   |    4 +-
 .../cli}/DbmUpdateCountCommandSpec.groovy          |    4 +-
 .../cli}/DbmUpdateCountSqlCommandSpec.groovy       |    4 +-
 .../cli}/DbmUpdateSqlCommandSpec.groovy            |    4 +-
 .../dbmigration/cli}/DbmValidateCommandSpec.groovy |    4 +-
 .../cli}/ScriptDatabaseMigrationCommandSpec.groovy |    2 +-
 .../DatabaseMigrationGrailsPluginSpec.groovy       |   48 +-
 .../liquibase/GroovyChangeLogSpec.groovy           |   12 +-
 .../liquibase/GroovyPreconditionSpec.groovy        |    4 +-
 grails-data-hibernate5/grails-plugin/build.gradle  |   18 +-
 .../hibernate5/cli}/SchemaExportCommand.groovy     |    6 +-
 grails-data-hibernate7/dbmigration/build.gradle    |   24 +-
 ...plicationContextDatabaseMigrationCommand.groovy |    4 +-
 .../cli}/DatabaseMigrationCommand.groovy           |    2 +-
 .../cli}/DbmChangelogSyncCommand.groovy            |    4 +-
 .../cli}/DbmChangelogSyncSqlCommand.groovy         |    4 +-
 .../dbmigration/cli}/DbmChangelogToGroovy.groovy   |    2 +-
 .../cli}/DbmClearChecksumsCommand.groovy           |    4 +-
 .../dbmigration/cli}/DbmCreateChangelog.groovy     |    2 +-
 .../dbmigration/cli}/DbmDbDocCommand.groovy        |    4 +-
 .../dbmigration/cli}/DbmDiffCommand.groovy         |    4 +-
 .../dbmigration/cli}/DbmDropAllCommand.groovy      |    4 +-
 .../cli}/DbmFutureRollbackCountSqlCommand.groovy   |    4 +-
 .../cli}/DbmFutureRollbackSqlCommand.groovy        |    4 +-
 .../cli}/DbmGenerateChangelogCommand.groovy        |    4 +-
 .../cli}/DbmGenerateGormChangelogCommand.groovy    |    4 +-
 .../dbmigration/cli}/DbmGormDiffCommand.groovy     |    4 +-
 .../dbmigration/cli}/DbmListLocksCommand.groovy    |    4 +-
 .../cli}/DbmMarkNextChangesetRanCommand.groovy     |    4 +-
 .../cli}/DbmMarkNextChangesetRanSqlCommand.groovy  |    4 +-
 .../cli}/DbmPreviousChangesetSqlCommand.groovy     |    4 +-
 .../dbmigration/cli}/DbmReleaseLocksCommand.groovy |    4 +-
 .../dbmigration/cli}/DbmRollbackCommand.groovy     |    4 +-
 .../cli}/DbmRollbackCountCommand.groovy            |    4 +-
 .../cli}/DbmRollbackCountSqlCommand.groovy         |    4 +-
 .../dbmigration/cli}/DbmRollbackSqlCommand.groovy  |    4 +-
 .../cli}/DbmRollbackToDateCommand.groovy           |    4 +-
 .../cli}/DbmRollbackToDateSqlCommand.groovy        |    4 +-
 .../dbmigration/cli}/DbmStatusCommand.groovy       |    4 +-
 .../dbmigration/cli}/DbmTagCommand.groovy          |    4 +-
 .../dbmigration/cli}/DbmUpdateCommand.groovy       |    4 +-
 .../dbmigration/cli}/DbmUpdateCountCommand.groovy  |    4 +-
 .../cli}/DbmUpdateCountSqlCommand.groovy           |    4 +-
 .../dbmigration/cli}/DbmUpdateSqlCommand.groovy    |    4 +-
 .../dbmigration/cli}/DbmValidateCommand.groovy     |    4 +-
 .../cli}/ScriptDatabaseMigrationCommand.groovy     |    2 +-
 .../commands}/dbm-changelog-to-groovy.groovy       |    2 +-
 .../META-INF/commands}/dbm-create-changelog.groovy |    2 +-
 .../databasemigration/DbUpdateCommandSpec.groovy   |    6 +-
 .../DatabaseMigrationGrailsPlugin.groovy           |   17 +-
 ...ationContextDatabaseMigrationCommandSpec.groovy |    6 +-
 .../cli}/DatabaseMigrationCommandConfigSpec.groovy |    2 +-
 .../cli}/DatabaseMigrationCommandSpec.groovy       |    2 +-
 .../cli}/DbmChangelogSyncCommandSpec.groovy        |    4 +-
 .../cli}/DbmChangelogSyncCommandSqlSpec.groovy     |    4 +-
 .../cli}/DbmClearChecksumsCommandSpec.groovy       |    4 +-
 .../dbmigration/cli}/DbmDiffCommandSpec.groovy     |    4 +-
 .../dbmigration/cli}/DbmDropAllCommandSpec.groovy  |    4 +-
 .../DbmFutureRollbackCountSqlCommandSpec.groovy    |    4 +-
 .../cli}/DbmFutureRollbackSqlCommandSpec.groovy    |    4 +-
 .../cli}/DbmGenerateChangelogCommandSpec.groovy    |    4 +-
 .../DbmGenerateGormChangelogCommandSpec.groovy     |    4 +-
 .../dbmigration/cli}/DbmGormDiffCommandSpec.groovy |    4 +-
 .../cli}/DbmListLocksCommandSpec.groovy            |    4 +-
 .../cli}/DbmMarkNextChangesetRanCommandSpec.groovy |    4 +-
 .../DbmMarkNextChangesetRanSqlCommandSpec.groovy   |    4 +-
 .../cli}/DbmPreviousChangesetSqlCommandSpec.groovy |    4 +-
 .../cli}/DbmReleaseLocksCommandSpec.groovy         |    4 +-
 .../dbmigration/cli}/DbmRollbackCommandSpec.groovy |    4 +-
 .../cli}/DbmRollbackCountCommandSpec.groovy        |    4 +-
 .../cli}/DbmRollbackCountSqlCommandSpec.groovy     |    4 +-
 .../cli}/DbmRollbackSqlCommandSpec.groovy          |    4 +-
 .../cli}/DbmRollbackToDateCommandSpec.groovy       |    4 +-
 .../cli}/DbmRollbackToDateSqlCommandSpec.groovy    |    4 +-
 .../dbmigration/cli}/DbmStatusCommandSpec.groovy   |    4 +-
 .../dbmigration/cli}/DbmUpdateCommandSpec.groovy   |    4 +-
 .../cli}/DbmUpdateCountCommandSpec.groovy          |    4 +-
 .../cli}/DbmUpdateCountSqlCommandSpec.groovy       |    4 +-
 .../cli}/DbmUpdateSqlCommandSpec.groovy            |    4 +-
 .../dbmigration/cli}/DbmValidateCommandSpec.groovy |    4 +-
 .../cli}/ScriptDatabaseMigrationCommandSpec.groovy |    2 +-
 .../DatabaseMigrationGrailsPluginSpec.groovy       |   48 +-
 .../liquibase/GroovyChangeLogSpec.groovy           |   12 +-
 .../liquibase/GroovyPreconditionSpec.groovy        |    4 +-
 grails-data-hibernate7/grails-plugin/build.gradle  |   18 +
 .../hibernate7/cli}/SchemaExportCommand.groovy     |    7 +-
 .../datastore/gorm/mongo/simple/EnumType.groovy    |    3 +-
 .../mapping/simple/query/SimpleMapQuery.groovy     |   28 +-
 .../grails/databinding/SimpleDataBinder.groovy     |    6 +-
 .../compiler/gorm/GormEntityTransformation.groovy  |    2 +-
 .../bootstrap/AbstractDatastoreInitializer.groovy  |    3 +-
 .../grails/datastore/gorm/jdbc/RelaxedNames.java   |    4 +-
 .../GlobalGormQuerySafetyASTTransformation.java    |   76 ++
 .../transform/GormQuerySafetyTransformer.java      |  690 ++++++++++++
 ...org.codehaus.groovy.transform.ASTTransformation |    1 +
 ...obalGormQuerySafetyASTTransformationSpec.groovy |   78 ++
 .../GormQuerySafetyTransformerSpec.groovy          |  543 ++++++++++
 .../data/testing/tck/tests/DomainEventsSpec.groovy |    2 +-
 .../DataSourceBeanDefinitionsPostProcessor.groovy  |   83 ++
 .../datasource/DataSourceGrailsPlugin.groovy       |   69 +-
 .../datasource/EmbeddedDatabaseShutdownHook.groovy |    2 +-
 .../datasource/DataSourceGrailsPluginSpec.groovy   |   92 +-
 .../datastore/mapping/reflect/AstUtils.groovy      |    3 +-
 .../src/en/guide/REST/callingRestServices.adoc     |   64 ++
 .../guide/commandLine/creatingCustomCommands.adoc  |  178 +++-
 .../gradleBuild/gradleDependencies.adoc            |    1 -
 .../commandLine/gradleBuild/gradlePlugins.adoc     |    2 +
 grails-doc/src/en/guide/conf/config/logging.adoc   |  137 ++-
 .../config/logging/loggingFullStackTraces.adoc     |    9 +
 grails-doc/src/en/guide/i18n/changingLocales.adoc  |   14 +-
 grails-doc/src/en/guide/introduction/whatsNew.adoc |   72 ++
 .../plugins/creatingAndInstallingPlugins.adoc      |    4 +-
 .../en/guide/plugins/providingBasicArtefacts.adoc  |   46 +-
 .../en/guide/security/securingAgainstAttacks.adoc  |   56 +
 .../guide/testing/runningTests/withGrailsCli.adoc  |   21 +-
 .../src/en/guide/upgrading/upgrading70x.adoc       |    6 +-
 .../src/en/guide/upgrading/upgrading80x.adoc       |  339 ++++++
 .../src/en/ref/Command Line/create-command.adoc    |   19 +-
 grails-doc/src/en/ref/Command Line/test-app.adoc   |   13 +-
 grails-doc/src/en/ref/Tags - GSP/localeSelect.adoc |   33 +-
 .../plugins/domain/DomainClassGrailsPlugin.groovy  |   18 +-
 .../domain/DomainClassGrailsPluginSpec.groovy      |   65 ++
 grails-events/plugin/build.gradle                  |    1 +
 .../plugins/events/EventBusGrailsPlugin.groovy     |   32 +-
 .../plugins/events/EventBusGrailsPluginSpec.groovy |   81 ++
 .../plugin/formfields/FieldsGrailsPlugin.groovy    |   43 +-
 .../model/DomainModelServiceImpl.groovy            |    2 +-
 .../formfields/FieldsGrailsPluginSpec.groovy       |   75 ++
 grails-forge/grails-cli/build.gradle               |    7 +
 .../main/java/org/grails/forge/api/FeatureDTO.java |   26 +
 .../groovy/org/grails/forge/cli/CommandSpec.groovy |   50 +-
 .../command/CreateDomainClassCommandSpec.groovy    |    2 +-
 .../forge/build/gradle/GradleRepository.java       |   78 +-
 .../forge/build/gradle/MavenLocalRepository.java   |   20 +-
 .../java/org/grails/forge/feature/Category.java    |    1 +
 .../java/org/grails/forge/feature/Feature.java     |   15 +
 .../grails/forge/feature/grails/GrailsConsole.java |   66 --
 .../forge/feature/grails/GrailsDefaultPlugins.java |    1 +
 .../feature/lang/groovy/GrailsApplication.java     |    2 +-
 .../feature/lang/groovy/application.rocker.raw     |    7 +
 .../forge/feature/lang/groovy/bootStrap.rocker.raw |   27 +-
 .../org/grails/forge/feature/logging/Logback.java  |   11 +-
 .../logging/{Logback.java => LogbackConfig.java}   |   39 +-
 .../feature/migration/DatabaseMigrationPlugin.java |   12 +-
 .../feature/security/GrailsSpringSecurity.java     |   91 ++
 .../feature/security/GrailsSpringSecurityUi.java   |   98 ++
 .../feature/security/PrimarySecurityFeature.java   |   30 +-
 .../forge/feature/security/SecurityFeature.java    |   87 ++
 .../security/SpringBootStarterSecurity.java        |   90 ++
 .../template/role.rocker.raw}                      |   25 +-
 .../template/securityApplicationGroovy.rocker.raw  |   52 +
 .../security/template/securityConfig.rocker.raw    |   51 +
 .../template/user.rocker.raw}                      |   30 +-
 .../security/template/userClassic.rocker.raw       |   64 ++
 .../template/userClassicService.rocker.raw}        |   14 +-
 .../template/userClassicSpec.rocker.raw}           |   26 +-
 .../template/userController.rocker.raw}            |   15 +-
 .../feature/security/template/userRole.rocker.raw  |  116 +++
 .../template/userService.rocker.raw}               |   20 +-
 .../template/userSpec.rocker.raw}                  |   19 +-
 .../resources/assets/javascripts/application.js    |   53 +-
 .../main/resources/assets/javascripts/welcome.js   |  120 ++-
 .../main/resources/assets/stylesheets/welcome.css  |   85 +-
 .../src/main/resources/gsp/index.gsp               | 1099 +++++++++++++++++++-
 .../src/main/resources/gsp/main.gsp                |  134 ++-
 .../src/main/resources/i18n/messages.properties    |   50 +
 .../src/main/resources/i18n/messages_cs.properties |   50 +
 .../src/main/resources/i18n/messages_da.properties |   50 +
 .../src/main/resources/i18n/messages_de.properties |   50 +
 .../src/main/resources/i18n/messages_es.properties |   50 +
 .../src/main/resources/i18n/messages_fr.properties |   50 +
 .../src/main/resources/i18n/messages_it.properties |   50 +
 .../src/main/resources/i18n/messages_ja.properties |   50 +
 .../src/main/resources/i18n/messages_nb.properties |   50 +
 .../src/main/resources/i18n/messages_nl.properties |   50 +
 .../src/main/resources/i18n/messages_pl.properties |   50 +
 .../main/resources/i18n/messages_pt_BR.properties  |   50 +
 .../main/resources/i18n/messages_pt_PT.properties  |   50 +
 .../src/main/resources/i18n/messages_ru.properties |   50 +
 .../src/main/resources/i18n/messages_sk.properties |   50 +
 .../src/main/resources/i18n/messages_sv.properties |   50 +
 .../src/main/resources/i18n/messages_th.properties |   50 +
 .../main/resources/i18n/messages_zh_CN.properties  |   50 +
 .../main/resources/i18n/messages_zh_TW.properties  |  153 +++
 .../forge/build/gradle/GradleRepositorySpec.groovy |  102 ++
 .../feature/grails/GrailsDefaultPluginsSpec.groovy |   13 +-
 .../forge/feature/logging/LogbackSpec.groovy       |   32 +-
 .../migration/DatabaseMigrationPluginSpec.groovy   |   13 +-
 .../security/GrailsSpringSecuritySpec.groovy       |  114 ++
 .../security/GrailsSpringSecurityUiSpec.groovy     |  107 ++
 .../security/SpringBootStarterSecuritySpec.groovy  |  112 ++
 .../grails/forge/feature/view/GrailsGspSpec.groovy |  196 +++-
 .../org/grails/forge/create/CreateAppSpec.groovy   |    2 +-
 .../model/src/main/groovy/grails/io/IOUtils.groovy |    6 +-
 .../src/main/groovy/grails/util/Environment.groovy |    8 +-
 .../io/support/FactoriesLoaderSupport.groovy       |   23 +-
 .../org/grails/io/support/SpringIOUtils.java       |    4 +-
 grails-gradle/plugins/build.gradle                 |   18 +
 .../plugin/commands/CliArtifactExtension.groovy    |   53 +
 .../plugin/commands/CliPublishingSupport.groovy    |  166 +++
 .../commands/GrailsCliArtifactGradlePlugin.groovy  |  229 ++++
 .../plugin/commands/GrailsCliGradlePlugin.groovy   |  580 +++++++++++
 .../commands/GrailsCliLibraryGradlePlugin.groovy   |   50 +
 .../gradle/plugin/core/GrailsExtension.groovy      |   33 +-
 .../gradle/plugin/core/GrailsGradlePlugin.groovy   |  294 ++----
 .../plugin/core/GrailsPluginGradlePlugin.groovy    |    2 +-
 .../gradle/plugin/util/ClasspathUtils.groovy       |   60 ++
 .../gradle/plugin/web/GrailsWebGradlePlugin.groovy |    6 +-
 .../plugin/commands/CliAutoDiscoverySpec.groovy    |  210 ++++
 .../commands/CliCompanionPublishingSpec.groovy     |   93 ++
 .../commands/LegacyCommandTaskDiscoverySpec.groovy |   44 +
 .../BomCliMultiprojectRaceFunctionalSpec.groovy    |   65 ++
 .../plugin/core/BomOptOutFunctionalSpec.groovy     |   17 +-
 .../auto-apply-bom-disabled/build.gradle           |    8 +-
 .../consumer/build.gradle                          |   16 +
 .../grails/race-bom/1.0-race/race-bom-1.0-race.pom |   24 +
 .../producer/build.gradle                          |   27 +
 .../bom-cli-multiproject-race/settings.gradle      |    4 +
 .../cli-companion-autodiscovery/app/build.gradle   |   92 ++
 .../cli-companion-autodiscovery/gradle.properties  |    2 +
 .../included-digit-bearing-plugin/build.gradle     |   21 +
 .../my-plugin-2fa-one/build.gradle                 |    1 +
 .../my-plugin-2fa-snapshot/build.gradle            |    1 +
 .../my-plugin-2fa-timestamp/build.gradle           |    1 +
 .../my-plugin-2fa-unspecified/build.gradle         |    1 +
 .../included-digit-bearing-plugin/settings.gradle  |    3 +
 .../my-plugin/build.gradle                         |   12 +
 .../cli/java/com/example/HelloWorldCommand.java    |    6 +
 .../cli/resources/META-INF/grails-cli.factories    |    1 +
 .../renamed-plugin/build.gradle                    |   13 +
 .../src/cli/java/com/acme/AcmeCommand.java         |    5 +
 .../cli-companion-autodiscovery/settings.gradle    |   12 +
 .../console-lib/build.gradle                       |   28 +
 .../custom-owner/build.gradle                      |   30 +
 .../cli-companion-publishing/gradle.properties     |    1 +
 .../cli-companion-publishing/owner/build.gradle    |   27 +
 .../cli-companion-publishing/plugin-a/build.gradle |   32 +
 .../cli-companion-publishing/plugin-b/build.gradle |   34 +
 .../cli-companion-publishing/resolver/build.gradle |   27 +
 .../cli-companion-publishing/settings.gradle       |    3 +
 .../legacy-command-discovery/app/build.gradle      |   15 +
 .../legacy-command-discovery/gradle.properties     |    2 +
 .../legacy-command-api/build.gradle                |    3 +
 .../grails/dev/commands/ApplicationCommand.java    |    8 +-
 .../java/grails/dev/commands/ExecutionContext.java |    7 +-
 .../legacy-command-plugin/build.gradle             |   14 +
 .../example/legacy/HelloLegacyAppCommand.groovy    |   27 +-
 .../src/main/resources/META-INF/grails.factories   |    1 +
 .../legacy-command-discovery/settings.gradle       |    3 +
 .../org/grails/gsp/ModelRecordingGroovyPage.groovy |    3 +-
 .../gsp/compiler/GrailsLayoutPreprocessor.java     |   14 +-
 .../grails/web/layout/LayoutGrailsPlugin.groovy    |   44 +-
 .../web/layout/LayoutGrailsPluginSpec.groovy       |   80 ++
 .../grails/plugins/web/taglib/FormTagLib.groovy    |  286 ++++-
 .../LocaleSelectConfiguredDefaultSpec.groovy       |   51 +
 .../taglib/LocaleSelectPinnedVariantSpec.groovy    |   53 +
 .../web/taglib/LocaleSelectRenderingSpec.groovy    |  349 +++++++
 .../plugins/i18n/AvailableLocaleResolver.java      |    9 +-
 .../i18n/AvailableLocaleResolverSpec.groovy        |   20 +-
 .../src/test/resources/messages_cs.properties      |    1 +
 .../InterceptorBeanDefinitionsPostProcessor.groovy |  104 ++
 .../interceptors/InterceptorsGrailsPlugin.groovy   |   30 +-
 .../InterceptorsGrailsPluginSpec.groovy            |  136 +++
 grails-profiles/base/profile.yml                   |    2 -
 .../skeleton/grails-app/conf/logback-spring.xml    |   25 -
 .../skeleton/grails-app/i18n/messages.properties   |   50 +
 .../grails-app/i18n/messages_cs.properties         |   50 +
 .../grails-app/i18n/messages_da.properties         |   50 +
 .../grails-app/i18n/messages_de.properties         |   50 +
 .../grails-app/i18n/messages_es.properties         |   50 +
 .../grails-app/i18n/messages_fr.properties         |   50 +
 .../grails-app/i18n/messages_it.properties         |   50 +
 .../grails-app/i18n/messages_ja.properties         |   50 +
 .../grails-app/i18n/messages_nb.properties         |   50 +
 .../grails-app/i18n/messages_nl.properties         |   50 +
 .../grails-app/i18n/messages_pl.properties         |   50 +
 .../grails-app/i18n/messages_pt_BR.properties      |   50 +
 .../grails-app/i18n/messages_pt_PT.properties      |   50 +
 .../grails-app/i18n/messages_ru.properties         |   50 +
 .../grails-app/i18n/messages_sk.properties         |   50 +
 .../grails-app/i18n/messages_sv.properties         |   50 +
 .../grails-app/i18n/messages_th.properties         |   50 +
 .../grails-app/i18n/messages_zh_CN.properties      |   50 +
 .../grails-app/i18n/messages_zh_TW.properties      |  153 +++
 .../base/templates/artifacts/Command.groovy        |    2 +-
 ...ls.codegen.projectClassName@GrailsPlugin.groovy |   11 +-
 ...ls.codegen.projectClassName@GrailsPlugin.groovy |   11 +-
 .../grails-app/assets/javascripts/application.js   |   53 +-
 .../grails-app/assets/javascripts/welcome.js       |  120 ++-
 .../grails-app/assets/stylesheets/welcome.css      |   85 +-
 .../web/skeleton/grails-app/views/index.gsp        | 1099 +++++++++++++++++++-
 .../web/skeleton/grails-app/views/layouts/main.gsp |  134 ++-
 grails-redis/build.gradle                          |    6 +
 .../redis/RedisBeanDefinitionsPostProcessor.groovy |   66 ++
 .../redis/util/RedisConfigurationUtil.groovy       |  120 ++-
 .../src/main/groovy/redis/RedisGrailsPlugin.groovy |   30 +-
 .../RedisBeanDefinitionsPostProcessorSpec.groovy   |  107 ++
 .../rest/plugin/RestResponderGrailsPlugin.groovy   |   24 +-
 .../plugin/RestResponderGrailsPluginSpec.groovy    |   65 ++
 .../web/rest/render/hal/HalJsonRendererSpec.groovy |   16 -
 .../web/rest/render/json/JsonRendererSpec.groovy   |   13 +-
 grails-scaffolding/build.gradle                    |   20 +
 .../scaffolding/cli}/CommandLineHelper.groovy      |    4 +-
 .../cli}/CreateScaffoldControllerCommand.groovy    |    6 +-
 .../cli}/CreateScaffoldServiceCommand.groovy       |    6 +-
 .../scaffolding/cli}/GenerateAllCommand.groovy     |    6 +-
 .../cli}/GenerateAsyncControllerCommand.groovy     |    6 +-
 .../cli}/GenerateControllerCommand.groovy          |    6 +-
 .../cli}/GenerateScaffoldAllCommand.groovy         |    6 +-
 .../scaffolding/cli}/GenerateServiceCommand.groovy |    6 +-
 .../scaffolding/cli}/GenerateViewsCommand.groovy   |    6 +-
 .../cli}/InstallTemplatesCommand.groovy            |    6 +-
 .../grails/scaffolding/cli}/SkipBootstrap.groovy   |    2 +-
 grails-services/build.gradle                       |    1 +
 .../ServiceBeanDefinitionsPostProcessor.groovy     |   99 ++
 .../plugins/services/ServicesGrailsPlugin.groovy   |   46 +-
 .../services/ServicesGrailsPluginSpec.groovy       |  140 +++
 .../main/groovy/org/grails/cli/GrailsCli.groovy    |   52 +-
 ...ltRepositorySystemSessionAutoConfiguration.java |   55 +
 .../grails/cli/gradle/GradleAsyncInvoker.groovy    |    3 +-
 .../cli/gradle/cache/CachedGradleOperation.groovy  |    3 +-
 .../completers/ClassNameCompleter.groovy           |    3 +-
 .../org/grails/cli/profile/AbstractProfile.groovy  |    4 +-
 .../cli/profile/GrailsRepositoryOverrides.groovy   |  128 +++
 .../grails/cli/profile/ProfileRepoConfig.groovy    |   20 +-
 .../cli/profile/commands/CreateAppCommand.groovy   |   38 +-
 .../commands/DefaultMultiStepCommand.groovy        |    3 +-
 .../ApplicationContextCommandFactory.groovy        |   62 +-
 .../factory/GroovyScriptCommandFactory.groovy      |    2 +
 .../commands/templates/TemplateRendererImpl.groovy |    3 +-
 .../repository/MavenProfileRepository.groovy       |   35 +-
 .../cli/GrailsCliProjectDetectionSpec.groovy       |   57 +
 ...sitorySystemSessionAutoConfigurationSpec.groovy |   97 ++
 .../grails/cli/profile/AbstractProfileSpec.groovy  |  119 +++
 .../profile/GrailsRepositoryOverridesSpec.groovy   |  123 +++
 .../profile/commands/CreateAppCommandSpec.groovy   |   61 ++
 .../ApplicationContextCommandFactorySpec.groovy    |  113 ++
 .../factory/LegacyPluginScriptCompatSpec.groovy    |  107 ++
 .../MavenProfileRepositorySnapshotSpec.groovy      |   53 +
 grails-spring-security/oauth2/plugin/build.gradle  |   20 +
 .../plugin/grails-app/i18n/messages.properties     |    3 +-
 .../grails-app/views/springSecurityOAuth2/ask.gsp  |  192 ++--
 .../security/oauth2/cli}/CommandLineHelper.groovy  |    2 +-
 .../security/oauth2/cli}/InitOAuth2Command.groovy  |    5 +-
 grails-spring-security/plugin/build.gradle         |   20 +
 .../plugin/springsecurity/LoginController.groovy   |    2 +-
 .../plugin/springsecurity/LogoutController.groovy  |   11 +
 .../i18n/spring-security-core.properties           |    1 +
 .../i18n/spring-security-core_cs.properties        |   39 +
 .../i18n/spring-security-core_da.properties        |   39 +
 .../i18n/spring-security-core_de.properties        |    6 +-
 .../i18n/spring-security-core_es.properties        |    2 +
 .../i18n/spring-security-core_fr.properties        |    4 +-
 .../i18n/spring-security-core_it.properties        |    2 +
 .../i18n/spring-security-core_ja.properties        |    2 +
 .../i18n/spring-security-core_nb.properties        |    2 +
 .../i18n/spring-security-core_nl.properties        |   39 +
 .../i18n/spring-security-core_pl.properties        |   39 +
 .../i18n/spring-security-core_pt_BR.properties     |    3 +-
 .../i18n/spring-security-core_pt_PT.properties     |   39 +
 .../i18n/spring-security-core_ru.properties        |    2 +
 .../i18n/spring-security-core_sk.properties        |   39 +
 .../i18n/spring-security-core_sv.properties        |    2 +
 .../i18n/spring-security-core_th.properties        |   39 +
 .../i18n/spring-security-core_zh_CN.properties     |   39 +
 .../i18n/spring-security-core_zh_TW.properties     |    1 +
 .../plugin/grails-app/views/login/auth.gsp         |  199 ++--
 .../plugin/grails-app/views/login/denied.gsp       |   17 +-
 .../grails/security/cli}/CommandLineHelper.groovy  |    4 +-
 .../cli}/S2CreatePersistentTokenCommand.groovy     |    5 +-
 .../cli}/S2CreateRoleHierarchyEntryCommand.groovy  |    5 +-
 .../security/cli}/S2QuickstartCommand.groovy       |    5 +-
 .../grails/security/cli}/SkipBootstrap.groovy      |    2 +-
 .../springsecurity/LogoutControllerSpec.groovy     |   23 +-
 grails-spring-security/ui/plugin/build.gradle      |   19 +-
 .../grails-app/assets/images/icons/error.svg       |    5 -
 .../plugin/grails-app/assets/images/icons/info.svg |    5 -
 .../plugin/grails-app/assets/images/icons/role.svg |    6 -
 .../plugin/grails-app/assets/images/icons/user.svg |    4 -
 .../grails-app/assets/images/icons/users.svg       |    6 -
 .../plugin/grails-app/assets/images/sort_asc.png   |  Bin 160 -> 0 bytes
 .../grails-app/assets/images/sort_asc_disabled.png |  Bin 148 -> 0 bytes
 .../plugin/grails-app/assets/images/sort_both.png  |  Bin 201 -> 0 bytes
 .../plugin/grails-app/assets/images/sort_desc.png  |  Bin 158 -> 0 bytes
 .../assets/images/sort_desc_disabled.png           |  Bin 146 -> 0 bytes
 .../assets/javascripts/jquery/jquery.jdMenu.js     |  171 ---
 .../assets/javascripts/jquery/jquery.positionBy.js |  306 ------
 .../javascripts/spring-security-ui-ajaxLogin.js    |   78 +-
 .../javascripts/spring-security-ui-register.js     |   22 -
 .../assets/javascripts/spring-security-ui.js       |   20 +-
 .../assets/stylesheets/elements/btn_left.gif       |  Bin 221 -> 0 bytes
 .../assets/stylesheets/elements/btn_right.gif      |  Bin 108 -> 0 bytes
 .../assets/stylesheets/elements/checkbox.gif       |  Bin 627 -> 0 bytes
 .../assets/stylesheets/elements/input.gif          |  Bin 606 -> 0 bytes
 .../assets/stylesheets/elements/input_left.gif     |  Bin 305 -> 0 bytes
 .../assets/stylesheets/elements/input_right.gif    |  Bin 183 -> 0 bytes
 .../assets/stylesheets/elements/radio.gif          |  Bin 762 -> 0 bytes
 .../assets/stylesheets/elements/select_right.gif   |  Bin 260 -> 0 bytes
 .../grails-app/assets/stylesheets/gradient-alt.png |  Bin 392 -> 0 bytes
 .../assets/stylesheets/gradient-vertical.png       |  Bin 700 -> 0 bytes
 .../grails-app/assets/stylesheets/gradient.png     |  Bin 392 -> 0 bytes
 .../assets/stylesheets/jquery.dataTables.css       |   22 -
 .../assets/stylesheets/jquery.jdMenu.css           |   90 --
 .../assets/stylesheets/jquery.jdMenu.slate.css     |   83 --
 .../plugin/grails-app/assets/stylesheets/reset.css |   69 --
 .../stylesheets/spring-security-ui-common.css      |  304 ------
 .../springsecurity/ui/SecurityUiTagLib.groovy      |  345 +++---
 .../ui/plugin/grails-app/views/aclClass/create.gsp |   28 +-
 .../ui/plugin/grails-app/views/aclClass/edit.gsp   |   41 +-
 .../ui/plugin/grails-app/views/aclClass/search.gsp |   50 +-
 .../ui/plugin/grails-app/views/aclEntry/create.gsp |   33 +-
 .../ui/plugin/grails-app/views/aclEntry/edit.gsp   |   41 +-
 .../ui/plugin/grails-app/views/aclEntry/search.gsp |  165 +--
 .../grails-app/views/aclObjectIdentity/create.gsp  |   30 +-
 .../grails-app/views/aclObjectIdentity/edit.gsp    |   43 +-
 .../grails-app/views/aclObjectIdentity/search.gsp  |  139 ++-
 .../ui/plugin/grails-app/views/aclSid/create.gsp   |   24 +-
 .../ui/plugin/grails-app/views/aclSid/edit.gsp     |   47 +-
 .../ui/plugin/grails-app/views/aclSid/search.gsp   |   77 +-
 .../grails-app/views/includes/_ajaxLogin.gsp       |  102 +-
 .../plugin/grails-app/views/layouts/register.gsp   |   23 +-
 .../grails-app/views/layouts/springSecurityUI.gsp  |  109 +-
 .../ui/plugin/grails-app/views/login/auth.gsp      |   69 +-
 .../grails-app/views/persistentLogin/edit.gsp      |   51 +-
 .../grails-app/views/persistentLogin/search.gsp    |   80 +-
 .../grails-app/views/register/forgotPassword.gsp   |   12 +-
 .../plugin/grails-app/views/register/register.gsp  |   18 +-
 .../grails-app/views/register/resetPassword.gsp    |   15 +-
 .../views/register/securityQuestions.gsp           |    9 +-
 .../grails-app/views/registrationCode/edit.gsp     |   41 +-
 .../grails-app/views/registrationCode/search.gsp   |   68 +-
 .../plugin/grails-app/views/requestmap/create.gsp  |   32 +-
 .../ui/plugin/grails-app/views/requestmap/edit.gsp |   43 +-
 .../plugin/grails-app/views/requestmap/search.gsp  |   80 +-
 .../ui/plugin/grails-app/views/role/create.gsp     |   22 +-
 .../ui/plugin/grails-app/views/role/edit.gsp       |   22 +-
 .../ui/plugin/grails-app/views/role/search.gsp     |   50 +-
 .../grails-app/views/securityInfo/config.gsp       |   15 +-
 .../grails-app/views/securityInfo/currentAuth.gsp  |    8 +-
 .../grails-app/views/securityInfo/mappings.gsp     |    3 +-
 .../views/securityInfo/secureChannel.gsp           |    2 +-
 .../grails-app/views/securityInfo/usercache.gsp    |    9 +-
 .../ui/plugin/grails-app/views/user/create.gsp     |   36 +-
 .../ui/plugin/grails-app/views/user/edit.gsp       |   49 +-
 .../ui/plugin/grails-app/views/user/search.gsp     |  112 +-
 .../ui/plugin/src/main/resources/META-INF/LICENSE  |   14 -
 .../ui/plugin/src/main/resources/META-INF/NOTICE   |   14 -
 .../ChallengeQuestionsCreate.gsp.template          |   41 +-
 .../templates/ChallengeQuestionsEdit.gsp.template  |   37 +-
 .../templates/ChallengeQuestionsIndex.gsp.template |   54 +-
 .../springsecurity/ui/SecurityUiTagLibSpec.groovy  |   57 +
 grails-test-examples/app1/build.gradle             |    1 -
 grails-test-examples/app2/build.gradle             |    1 -
 .../controllers/app2/TestController.groovy         |    8 +
 .../GrailsUtilStackFiltererIntegrationSpec.groovy  |   59 ++
 .../groovy/app2/RecordingStackTraceFilterer.groovy |   57 +
 grails-test-examples/app3/build.gradle             |    1 -
 grails-test-examples/cache/build.gradle            |    1 -
 .../ConfigReportCommandIntegrationSpec.groovy      |    4 +-
 grails-test-examples/datasources/build.gradle      |    1 -
 grails-test-examples/exploded/build.gradle         |    1 -
 grails-test-examples/gorm/build.gradle             |    1 -
 .../graphql/grails-docs-app/build.gradle           |    1 -
 .../grails-multi-datastore-app/build.gradle        |    1 -
 .../graphql/grails-tenant-app/build.gradle         |    1 -
 .../graphql/grails-test-app/build.gradle           |    1 -
 grails-test-examples/hibernate7/app1/build.gradle  |    1 -
 .../hibernate7/datasources/build.gradle            |    1 -
 grails-test-examples/hibernate7/gorm/build.gradle  |    1 -
 .../issue-698-domain-save-npe/build.gradle         |    1 -
 .../hibernate7/scaffolding-fields/build.gradle     |    1 -
 grails-test-examples/hyphenated/build.gradle       |    1 -
 grails-test-examples/issue-11102/build.gradle      |    1 -
 .../issue-698-domain-save-npe/build.gradle         |    1 -
 grails-test-examples/issue-views-182/build.gradle  |    1 -
 grails-test-examples/namespaces/build.gradle       |    1 -
 grails-test-examples/plugins/exploded/build.gradle |    1 -
 .../plugins/issue11005/build.gradle                |    1 -
 .../plugins/loadafter/build.gradle                 |    1 -
 .../plugins/loadfirst/build.gradle                 |    1 -
 .../plugins/loadsecond/build.gradle                |    1 -
 .../plugins/micronaut-singleton/build.gradle       |    1 +
 .../scaffolding-fields/build.gradle                |    1 -
 grails-test-examples/scaffolding/build.gradle      |    1 -
 .../integration-test/groovy/pages/LoginPage.groovy |    2 +-
 .../integration-test/groovy/pages/LoginPage.groovy |    2 +-
 .../groovy/specs/InheritanceSecuritySpec.groovy    |   12 +-
 .../groovy/specs/NamespaceSecuritySpec.groovy      |    8 +-
 .../integration-test/groovy/pages/LoginPage.groovy |    2 +-
 .../integration-test/groovy/pages/LoginPage.groovy |    2 +-
 .../integration-test/groovy/pages/LoginPage.groovy |    2 +-
 .../integration-test/groovy/pages/LoginPage.groovy |    2 +-
 .../src/testFixtures/groovy/module/RolesTab.groovy |    4 +-
 .../src/testFixtures/groovy/page/CreatePage.groovy |    2 +-
 .../src/testFixtures/groovy/page/EditPage.groovy   |    6 +-
 .../src/testFixtures/groovy/page/SearchPage.groovy |    4 +-
 .../groovy/page/register/ForgotPasswordPage.groovy |    2 +-
 .../groovy/page/register/RegisterPage.groovy       |    2 +-
 .../groovy/page/register/ResetPasswordPage.groovy  |    2 +-
 .../page/register/SecurityQuestionsPage.groovy     |    2 +-
 .../grails-app/assets/javascripts/application.js   |    2 +
 .../grails-app/assets/stylesheets/application.css  |   26 +-
 .../grails-app/assets/stylesheets/main.css         |  615 -----------
 .../grails-app/views/includes/_ajaxLogin.gsp       |   69 --
 .../ui/extended/grails-app/views/layouts/email.gsp |   31 -
 .../ui/extended/grails-app/views/layouts/main.gsp  |   28 +-
 .../extended/grails-app/views/layouts/register.gsp |   36 -
 .../grails-app/views/layouts/springSecurityUI.gsp  |   81 --
 .../ui/extended/grails-app/views/login/auth.gsp    |   63 +-
 .../extended/grails-app/views/profile/create.gsp   |   30 +-
 .../ui/extended/grails-app/views/profile/edit.gsp  |   24 +-
 .../views/register/_forgotPasswordMail.gsp         |   25 -
 .../views/register/_verifyRegistrationMail.gsp     |   23 -
 .../grails-app/views/register/forgotPassword.gsp   |   42 -
 .../grails-app/views/register/register.gsp         |   46 -
 .../grails-app/views/register/resetPassword.gsp    |   40 -
 .../views/register/securityQuestions.gsp           |   35 -
 .../ui/extended/grails-app/views/role/create.gsp   |   42 -
 .../ui/extended/grails-app/views/role/edit.gsp     |   49 -
 .../ui/extended/grails-app/views/role/search.gsp   |   56 -
 .../ui/extended/grails-app/views/user/create.gsp   |   55 -
 .../ui/extended/grails-app/views/user/edit.gsp     |   76 --
 .../ui/extended/grails-app/views/user/search.gsp   |   94 --
 .../extended/page/profile/ProfileEditPage.groovy   |    6 +-
 .../extended/spec/ExtendedSecurityInfoSpec.groovy  |    7 +-
 .../grails-app/assets/javascripts/application.js   |    2 +
 .../grails-app/assets/stylesheets/application.css  |   26 +-
 .../simple/grails-app/assets/stylesheets/main.css  |  615 -----------
 .../grails-app/views/includes/_ajaxLogin.gsp       |   69 --
 .../ui/simple/grails-app/views/layouts/email.gsp   |   31 -
 .../ui/simple/grails-app/views/layouts/main.gsp    |   28 +-
 .../simple/grails-app/views/layouts/register.gsp   |   36 -
 .../grails-app/views/layouts/springSecurityUI.gsp  |   81 --
 .../grails-app/views/persistentLogin/edit.gsp      |   58 --
 .../grails-app/views/persistentLogin/search.gsp    |   73 --
 .../views/register/_forgotPasswordMail.gsp         |   25 -
 .../views/register/_verifyRegistrationMail.gsp     |   23 -
 .../grails-app/views/register/forgotPassword.gsp   |   42 -
 .../simple/grails-app/views/register/register.gsp  |   46 -
 .../grails-app/views/register/resetPassword.gsp    |   40 -
 .../views/register/securityQuestions.gsp           |   35 -
 .../grails-app/views/registrationCode/edit.gsp     |   53 -
 .../grails-app/views/registrationCode/search.gsp   |   66 --
 .../simple/grails-app/views/requestmap/create.gsp  |   47 -
 .../ui/simple/grails-app/views/requestmap/edit.gsp |   54 -
 .../simple/grails-app/views/requestmap/search.gsp  |   73 --
 .../ui/simple/grails-app/views/role/create.gsp     |   42 -
 .../ui/simple/grails-app/views/role/edit.gsp       |   49 -
 .../ui/simple/grails-app/views/role/search.gsp     |   56 -
 .../grails-app/views/securityInfo/config.gsp       |   61 --
 .../grails-app/views/securityInfo/currentAuth.gsp  |   44 -
 .../grails-app/views/securityInfo/filterChains.gsp |   41 -
 .../views/securityInfo/logoutHandlers.gsp          |   29 -
 .../grails-app/views/securityInfo/mappings.gsp     |   34 -
 .../grails-app/views/securityInfo/providers.gsp    |   29 -
 .../views/securityInfo/secureChannel.gsp           |   35 -
 .../grails-app/views/securityInfo/usercache.gsp    |   87 --
 .../grails-app/views/securityInfo/voters.gsp       |   29 -
 .../ui/simple/grails-app/views/user/create.gsp     |   55 -
 .../ui/simple/grails-app/views/user/edit.gsp       |   76 --
 .../ui/simple/grails-app/views/user/search.gsp     |   94 --
 .../simple/spec/DefaultSecurityInfoSpec.groovy     |    7 +-
 grails-testing-support-core/build.gradle           |    2 +
 .../grails/testing/services/ServiceUnitTest.groovy |    2 +-
 .../IntegrationTestAstTransformation.groovy        |    3 +-
 .../org/grails/testing/GrailsUnitTest.groovy       |   43 +-
 .../testing/DefineBeansPluginHooksSpec.groovy      |   57 +
 .../testing/spock/WebSetupSpecInterceptor.groovy   |    2 +-
 .../UrlMappingsBeanDefinitionsPostProcessor.groovy |  111 ++
 .../web/mapping/UrlMappingsGrailsPlugin.groovy     |   56 +-
 .../web/mapping/UrlMappingsGrailsPluginSpec.groovy |  111 ++
 .../resolve/GenericGroovyTemplateResolver.groovy   |    2 +-
 .../plugin/json/view/JsonViewGrailsPlugin.groovy   |   44 +-
 .../json/view/JsonViewGrailsPluginSpec.groovy      |   69 ++
 .../markup/view/MarkupViewGrailsPlugin.groovy      |   42 +-
 .../markup/view/MarkupViewGrailsPluginSpec.groovy  |   68 ++
 .../groovy/org/grails/web/json/JSONTokener.java    |    2 +-
 .../grails/web/databinding/DataBindingUtils.java   |   33 +-
 .../web/databinding/GrailsWebDataBinder.groovy     |    4 +-
 .../LegacyBindableDefaultConfigSpec.groovy         |  168 +++
 .../grails/web/errors/GrailsExceptionResolver.java |   39 +
 .../web/errors/GrailsExceptionResolverSpec.groovy  |   88 ++
 grails-web-url-mappings/build.gradle               |   16 +
 .../mapping/cli}/UrlMappingsReportCommand.groovy   |    7 +-
 .../grails/web/mapping/DefaultLinkGenerator.groovy |    4 +-
 .../org/grails/web/mapping/RegexUrlMapping.java    |    2 +-
 grails-wrapper/build.gradle                        |    9 +-
 .../src/main/java/grails/init/GrailsUpdater.java   |  125 ++-
 .../main/java/grails/init/GrailsWrapperRepo.java   |   86 +-
 .../groovy/grails/init/GrailsUpdaterSpec.groovy    |  254 +++++
 .../grails/init/GrailsWrapperRepoSpec.groovy       |  150 +++
 settings.gradle                                    |   12 +-
 812 files changed, 27004 insertions(+), 9352 deletions(-)
 create mode 100644 .github/workflows/end-to-end.yml
 create mode 100644 build-logic/plugins/src/test/groovy/org/apache/grails/buildsrc/PublishPluginSpec.groovy
 create mode 100644 build-logic/plugins/src/test/groovy/org/apache/grails/buildsrc/SbomPluginSpec.groovy
 create mode 100644 end-to-end/README.md
 create mode 100644 end-to-end/build.gradle
 copy grails-spring-security/oauth2/plugin/grails-app/i18n/messages.properties => end-to-end/gradle.properties (55%)
 copy {build-logic => end-to-end}/gradle/wrapper/gradle-wrapper.jar (100%)
 create mode 100644 end-to-end/gradle/wrapper/gradle-wrapper.properties
 create mode 100755 end-to-end/gradlew
 create mode 100755 end-to-end/gradlew.bat
 copy {grails-test-examples/plugins/micronaut-singleton => end-to-end/legacy-commands-plugin}/build.gradle (56%)
 rename grails-spring-security/ui/plugin/grails-app/assets/stylesheets/jquery-ui.css => end-to-end/legacy-commands-plugin/src/main/groovy/legacy/commands/plugin/GreetingService.groovy (91%)
 copy grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command/DbmUpdateSqlCommand.groovy => end-to-end/legacy-commands-plugin/src/main/groovy/legacy/commands/plugin/HelloLegacyAppCommand.groovy (60%)
 copy grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command/DbmUpdateCommand.groovy => end-to-end/legacy-commands-plugin/src/main/groovy/legacy/commands/plugin/HelloLegacyGrailsCommand.groovy (57%)
 rename grails-spring-security/ui/plugin/grails-app/assets/stylesheets/spring-security-ui-auth.css => end-to-end/legacy-commands-plugin/src/main/groovy/legacy/commands/plugin/LegacyCommandsPluginGrailsPlugin.groovy (69%)
 create mode 100644 end-to-end/legacy-commands-plugin/src/main/resources/META-INF/grails.factories
 copy grails-scaffolding/src/main/groovy/grails/plugin/scaffolding/SkipBootstrap.groovy => end-to-end/legacy-commands-plugin/src/main/scripts/hello-legacy-script.groovy (80%)
 copy {grails-test-examples/cache => end-to-end/legacy-commands}/build.gradle (51%)
 create mode 100644 end-to-end/legacy-commands/grails-app/conf/application.yml
 copy {grails-test-examples/config-report => end-to-end/legacy-commands}/grails-app/conf/logback.xml (100%)
 copy grails-test-examples/app2/grails-app/controllers/app2/TestController.groovy => end-to-end/legacy-commands/grails-app/controllers/legacycommands/UrlMappings.groovy (73%)
 copy grails-test-examples/app2/grails-app/controllers/app2/TestController.groovy => end-to-end/legacy-commands/grails-app/init/legacycommands/Application.groovy (78%)
 copy grails-test-examples/app2/grails-app/controllers/app2/TestController.groovy => end-to-end/legacy-commands/grails-app/services/legacycommands/GreetingService.groovy (84%)
 create mode 100644 end-to-end/legacy-commands/src/integration-test/groovy/legacycommands/LegacyCommandCompatibilityIntegrationSpec.groovy
 create mode 100644 end-to-end/legacy-g7-command-plugin/.sdkmanrc
 create mode 100644 end-to-end/legacy-g7-command-plugin/build.gradle
 copy {build-logic => end-to-end/legacy-g7-command-plugin}/gradle/wrapper/gradle-wrapper.jar (100%)
 create mode 100644 end-to-end/legacy-g7-command-plugin/gradle/wrapper/gradle-wrapper.properties
 create mode 100755 end-to-end/legacy-g7-command-plugin/gradlew
 create mode 100755 end-to-end/legacy-g7-command-plugin/gradlew.bat
 create mode 100644 end-to-end/legacy-g7-command-plugin/settings.gradle
 copy grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command/DbmFutureRollbackSqlCommand.groovy => end-to-end/legacy-g7-command-plugin/src/main/groovy/legacy/g7/commands/HelloDerivedNameCommand.groovy (51%)
 copy grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command/DbmFutureRollbackSqlCommand.groovy => end-to-end/legacy-g7-command-plugin/src/main/groovy/legacy/g7/commands/HelloG7PrecompiledCommand.groovy (56%)
 copy grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command/DbmUpdateCommand.groovy => end-to-end/legacy-g7-command-plugin/src/main/groovy/legacy/g7/commands/HelloG7PrecompiledGrailsCommand.groovy (59%)
 create mode 100644 end-to-end/legacy-g7-command-plugin/src/main/resources/META-INF/grails.factories
 create mode 100644 end-to-end/settings.gradle
 create mode 100644 gradle/cli-companion-bom-constraints.gradle
 copy grails-async/plugin/src/{main/groovy/org/grails/plugins/web/async/ControllersAsyncGrailsPlugin.groovy => test/groovy/org/grails/plugins/web/async/ControllersAsyncGrailsPluginSpec.groovy} (52%)
 create mode 100644 grails-cache/src/main/groovy/grails/plugin/cache/GrailsCacheAutoConfiguration.groovy
 create mode 100644 grails-cache/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
 create mode 100644 grails-cache/src/test/groovy/grails/plugin/cache/CacheGrailsPluginSpec.groovy
 create mode 100644 grails-cache/src/test/groovy/grails/plugin/cache/GrailsCacheAutoConfigurationSpec.groovy
 create mode 100644 grails-controllers/src/main/groovy/org/grails/plugins/web/controllers/ControllerBeanDefinitionsPostProcessor.groovy
 create mode 100644 grails-controllers/src/test/groovy/org/grails/plugins/web/controllers/ControllerBeanDefinitionsPostProcessorSpec.groovy
 create mode 100644 grails-controllers/src/test/groovy/org/grails/plugins/web/controllers/ControllersGrailsPluginSpec.groovy
 create mode 100644 grails-converters/src/test/groovy/org/grails/plugins/converters/ConvertersGrailsPluginSpec.groovy
 copy {grails-services => grails-core-cli-legacy}/build.gradle (75%)
 copy {grails-core => grails-core-cli-legacy}/src/main/groovy/grails/dev/commands/ApplicationCommand.groovy (91%)
 copy {grails-core => grails-core-cli-legacy}/src/main/groovy/grails/dev/commands/ExecutionContext.groovy (87%)
 copy {grails-core => grails-core-cli-legacy}/src/main/groovy/grails/dev/commands/GrailsApplicationCommand.groovy (88%)
 copy {grails-core => grails-core-cli-legacy}/src/main/groovy/grails/dev/commands/io/FileSystemInteraction.groovy (94%)
 copy {grails-core => grails-core-cli-legacy}/src/main/groovy/grails/dev/commands/io/FileSystemInteractionImpl.groovy (97%)
 rename grails-spring-security/ui/plugin/src/main/groovy/grails/plugin/springsecurity/ui/Constants.groovy => grails-core-cli-legacy/src/main/groovy/grails/dev/commands/template/TemplateException.groovy (63%)
 copy {grails-core => grails-core-cli-legacy}/src/main/groovy/grails/dev/commands/template/TemplateRenderer.groovy (95%)
 copy {grails-core => grails-core-cli-legacy}/src/main/groovy/grails/dev/commands/template/TemplateRendererImpl.groovy (97%)
 create mode 100644 grails-core-cli-legacy/src/main/groovy/org/apache/grails/core/cli/compat/LegacyApplicationCommandAdapter.groovy
 create mode 100644 grails-core-cli-legacy/src/main/groovy/org/apache/grails/core/cli/compat/LegacyApplicationCommandProvider.groovy
 create mode 100644 grails-core-cli-legacy/src/main/resources/META-INF/grails-cli.factories
 create mode 100644 grails-core-cli-legacy/src/test/groovy/org/apache/grails/core/cli/LegacyCommandRegistryLoadingSpec.groovy
 create mode 100644 grails-core-cli-legacy/src/test/groovy/org/apache/grails/core/cli/compat/LegacyApplicationCommandAdapterSpec.groovy
 rename grails-core/src/{main/groovy/grails/dev/commands => cli/groovy/org/apache/grails/core/cli}/ApplicationCommand.groovy (97%)
 create mode 100644 grails-core/src/cli/groovy/org/apache/grails/core/cli/ApplicationCommandDiagnostics.groovy
 rename grails-spring-security/ui/plugin/grails-app/assets/stylesheets/spring-security-ui.css => grails-core/src/cli/groovy/org/apache/grails/core/cli/ApplicationCommandFactoryKeyProvider.groovy (76%)
 copy grails-core/src/{main/groovy/grails/dev/commands/template/TemplateException.groovy => cli/groovy/org/apache/grails/core/cli/ApplicationCommandProvider.groovy} (71%)
 copy grails-core/src/{main/groovy/grails/dev/commands/template/TemplateException.groovy => cli/groovy/org/apache/grails/core/cli/ApplicationCommandRegistrar.groovy} (72%)
 rename grails-spring-security/ui/plugin/grails-app/assets/stylesheets/spring-security-ui-register.css => grails-core/src/cli/groovy/org/apache/grails/core/cli/ApplicationCommandTargetAware.groovy (79%)
 create mode 100644 grails-core/src/cli/groovy/org/apache/grails/core/cli/ApplicationContextCommandRegistry.groovy
 rename grails-core/src/{main/groovy/grails/dev/commands => cli/groovy/org/apache/grails/core/cli}/ConfigReportCommand.groovy (99%)
 rename grails-core/src/{main/groovy/grails/dev/commands => cli/groovy/org/apache/grails/core/cli}/ExecutionContext.groovy (96%)
 rename grails-core/src/{main/groovy/grails/dev/commands => cli/groovy/org/apache/grails/core/cli}/GrailsApplicationCommand.groovy (84%)
 create mode 100644 grails-core/src/cli/groovy/org/apache/grails/core/cli/compiler/CommandFactoriesTransformation.groovy
 rename grails-core/src/{main/groovy/grails/dev/commands => cli/groovy/org/apache/grails/core/cli}/io/FileSystemInteraction.groovy (98%)
 rename grails-core/src/{main/groovy/grails/dev/commands => cli/groovy/org/apache/grails/core/cli}/io/FileSystemInteractionImpl.groovy (99%)
 rename grails-core/src/{main/groovy/grails/dev/commands => cli/groovy/org/apache/grails/core/cli}/template/TemplateException.groovy (95%)
 rename grails-core/src/{main/groovy/grails/dev/commands => cli/groovy/org/apache/grails/core/cli}/template/TemplateRenderer.groovy (99%)
 rename grails-core/src/{main/groovy/grails/dev/commands => cli/groovy/org/apache/grails/core/cli}/template/TemplateRendererImpl.groovy (97%)
 create mode 100644 grails-core/src/cli/resources/META-INF/grails-cli.factories
 create mode 100644 grails-core/src/cli/resources/META-INF/services/org.codehaus.groovy.transform.ASTTransformation
 delete mode 100644 grails-core/src/main/groovy/grails/dev/commands/ApplicationContextCommandRegistry.groovy
 create mode 100644 grails-core/src/main/groovy/org/grails/compiler/injection/FactoriesFileWriter.groovy
 create mode 100644 grails-core/src/test/groovy/grails/plugins/DefaultGrailsPluginManagerRegistryContractSpec.groovy
 create mode 100644 grails-core/src/test/groovy/grails/util/GrailsUtilStackFiltererSpec.groovy
 create mode 100644 grails-core/src/test/groovy/org/apache/grails/core/GrailsBootstrapRegistryInitializerSpec.groovy
 create mode 100644 grails-core/src/test/groovy/org/apache/grails/core/cli/ApplicationCommandProviderSpec.groovy
 rename grails-core/src/test/groovy/{grails/dev/commands => org/apache/grails/core/cli}/ConfigReportCommandSpec.groovy (99%)
 create mode 100644 grails-core/src/test/groovy/org/apache/grails/core/cli/compiler/CommandFactoriesTransformationSpec.groovy
 create mode 100644 grails-core/src/test/groovy/org/grails/compiler/injection/FactoriesFileWriterSpec.groovy
 create mode 100644 grails-core/src/test/resources/META-INF/grails-cli.factories
 create mode 100644 grails-core/src/test/resources/logback-test.xml
 create mode 100644 grails-core/src/testFixtures/groovy/org/apache/grails/core/testing/support/LogCapture.groovy
 create mode 100644 grails-data-graphql/plugin/src/test/groovy/org/grails/gorm/graphql/plugin/GormGraphqlGrailsPluginSpec.groovy
 rename grails-data-hibernate5/dbmigration/src/{main/groovy/org/grails/plugins/databasemigration/command => cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/ApplicationContextDatabaseMigrationCommand.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/{main/groovy/org/grails/plugins/databasemigration/command => cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DatabaseMigrationCommand.groovy (99%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmChangelogSyncCommand.groovy (91%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmChangelogSyncSqlCommand.groovy (92%)
 rename grails-data-hibernate5/dbmigration/src/{main/groovy/org/grails/plugins/databasemigration/command => cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmChangelogToGroovy.groovy (98%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmClearChecksumsCommand.groovy (91%)
 rename {grails-data-hibernate7/dbmigration/src/main/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmCreateChangelog.groovy (97%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmDbDocCommand.groovy (92%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmDiffCommand.groovy (96%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmDropAllCommand.groovy (93%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmFutureRollbackCountSqlCommand.groovy (94%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmFutureRollbackSqlCommand.groovy (92%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmGenerateChangelogCommand.groovy (94%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmGenerateGormChangelogCommand.groovy (95%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmGormDiffCommand.groovy (95%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmListLocksCommand.groovy (94%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmMarkNextChangesetRanCommand.groovy (91%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmMarkNextChangesetRanSqlCommand.groovy (92%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmPreviousChangesetSqlCommand.groovy (95%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmReleaseLocksCommand.groovy (91%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackCommand.groovy (93%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackCountCommand.groovy (93%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackCountSqlCommand.groovy (94%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackSqlCommand.groovy (93%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackToDateCommand.groovy (94%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackToDateSqlCommand.groovy (95%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmStatusCommand.groovy (93%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmTagCommand.groovy (92%)
 copy grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmUpdateCommand.groovy (91%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmUpdateCountCommand.groovy (93%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmUpdateCountSqlCommand.groovy (94%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmUpdateSqlCommand.groovy (92%)
 copy {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmValidateCommand.groovy (91%)
 rename {grails-data-hibernate7/dbmigration/src/main/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/ScriptDatabaseMigrationCommand.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/{main/scripts => cli/resources/META-INF/commands}/dbm-changelog-to-groovy.groovy (95%)
 rename grails-data-hibernate5/dbmigration/src/{main/scripts => cli/resources/META-INF/commands}/dbm-create-changelog.groovy (95%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/ApplicationContextDatabaseMigrationCommandSpec.groovy (96%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DatabaseMigrationCommandConfigSpec.groovy (98%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DatabaseMigrationCommandSpec.groovy (96%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmChangelogSyncCommandSpec.groovy (93%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmChangelogSyncCommandSqlSpec.groovy (95%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmClearChecksumsCommandSpec.groovy (95%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmDiffCommandSpec.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmDropAllCommandSpec.groovy (93%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmFutureRollbackCountSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmFutureRollbackSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmGenerateChangelogCommandSpec.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmGenerateGormChangelogCommandSpec.groovy (98%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmGormDiffCommandSpec.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmListLocksCommandSpec.groovy (95%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmMarkNextChangesetRanCommandSpec.groovy (93%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmMarkNextChangesetRanSqlCommandSpec.groovy (95%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmPreviousChangesetSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmReleaseLocksCommandSpec.groovy (93%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackCommandSpec.groovy (97%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackCountCommandSpec.groovy (97%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackCountSqlCommandSpec.groovy (97%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackToDateCommandSpec.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackToDateSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmStatusCommandSpec.groovy (94%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmUpdateCommandSpec.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmUpdateCountCommandSpec.groovy (96%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmUpdateCountSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmUpdateSqlCommandSpec.groovy (98%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmValidateCommandSpec.groovy (96%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/ScriptDatabaseMigrationCommandSpec.groovy (97%)
 copy {grails-data-hibernate7 => grails-data-hibernate5}/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/DatabaseMigrationGrailsPluginSpec.groovy (80%)
 rename grails-data-hibernate5/grails-plugin/src/{main/groovy/grails/plugin/hibernate/commands => cli/groovy/org/apache/grails/data/hibernate5/cli}/SchemaExportCommand.groovy (96%)
 rename grails-data-hibernate7/dbmigration/src/{main/groovy/org/grails/plugins/databasemigration/command => cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/ApplicationContextDatabaseMigrationCommand.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/{main/groovy/org/grails/plugins/databasemigration/command => cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DatabaseMigrationCommand.groovy (99%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmChangelogSyncCommand.groovy (91%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmChangelogSyncSqlCommand.groovy (92%)
 rename grails-data-hibernate7/dbmigration/src/{main/groovy/org/grails/plugins/databasemigration/command => cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmChangelogToGroovy.groovy (98%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmClearChecksumsCommand.groovy (91%)
 rename {grails-data-hibernate5/dbmigration/src/main/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmCreateChangelog.groovy (97%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmDbDocCommand.groovy (92%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmDiffCommand.groovy (96%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmDropAllCommand.groovy (93%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmFutureRollbackCountSqlCommand.groovy (94%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmFutureRollbackSqlCommand.groovy (92%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmGenerateChangelogCommand.groovy (94%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmGenerateGormChangelogCommand.groovy (95%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmGormDiffCommand.groovy (95%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmListLocksCommand.groovy (94%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmMarkNextChangesetRanCommand.groovy (91%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmMarkNextChangesetRanSqlCommand.groovy (92%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmPreviousChangesetSqlCommand.groovy (95%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmReleaseLocksCommand.groovy (91%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackCommand.groovy (93%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackCountCommand.groovy (93%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackCountSqlCommand.groovy (94%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackSqlCommand.groovy (93%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackToDateCommand.groovy (94%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackToDateSqlCommand.groovy (95%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmStatusCommand.groovy (93%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmTagCommand.groovy (92%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmUpdateCommand.groovy (91%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmUpdateCountCommand.groovy (93%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmUpdateCountSqlCommand.groovy (94%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmUpdateSqlCommand.groovy (92%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmValidateCommand.groovy (91%)
 rename {grails-data-hibernate5/dbmigration/src/main/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/ScriptDatabaseMigrationCommand.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/{main/scripts => cli/resources/META-INF/commands}/dbm-changelog-to-groovy.groovy (95%)
 rename grails-data-hibernate7/dbmigration/src/{main/scripts => cli/resources/META-INF/commands}/dbm-create-changelog.groovy (95%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/ApplicationContextDatabaseMigrationCommandSpec.groovy (96%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DatabaseMigrationCommandConfigSpec.groovy (98%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DatabaseMigrationCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmChangelogSyncCommandSpec.groovy (93%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmChangelogSyncCommandSqlSpec.groovy (95%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmClearChecksumsCommandSpec.groovy (95%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmDiffCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmDropAllCommandSpec.groovy (93%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmFutureRollbackCountSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmFutureRollbackSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmGenerateChangelogCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmGenerateGormChangelogCommandSpec.groovy (98%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmGormDiffCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmListLocksCommandSpec.groovy (95%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmMarkNextChangesetRanCommandSpec.groovy (93%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmMarkNextChangesetRanSqlCommandSpec.groovy (95%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmPreviousChangesetSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmReleaseLocksCommandSpec.groovy (93%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackCommandSpec.groovy (97%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackCountCommandSpec.groovy (97%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackCountSqlCommandSpec.groovy (97%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackToDateCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackToDateSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmStatusCommandSpec.groovy (94%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmUpdateCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmUpdateCountCommandSpec.groovy (96%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmUpdateCountSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmUpdateSqlCommandSpec.groovy (98%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmValidateCommandSpec.groovy (96%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/ScriptDatabaseMigrationCommandSpec.groovy (97%)
 rename grails-data-hibernate7/grails-plugin/src/{main/groovy/grails/plugin/hibernate/commands => cli/groovy/org/apache/grails/data/hibernate7/cli}/SchemaExportCommand.groovy (95%)
 create mode 100644 grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/query/transform/GlobalGormQuerySafetyASTTransformation.java
 create mode 100644 grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/query/transform/GormQuerySafetyTransformer.java
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/query/transform/GlobalGormQuerySafetyASTTransformationSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/query/transform/GormQuerySafetyTransformerSpec.groovy
 create mode 100644 grails-datasource/src/main/groovy/org/grails/plugins/datasource/DataSourceBeanDefinitionsPostProcessor.groovy
 create mode 100644 grails-domain-class/src/test/groovy/org/grails/plugins/domain/DomainClassGrailsPluginSpec.groovy
 create mode 100644 grails-events/plugin/src/test/groovy/org/grails/plugins/events/EventBusGrailsPluginSpec.groovy
 create mode 100644 grails-fields/src/test/groovy/grails/plugin/formfields/FieldsGrailsPluginSpec.groovy
 copy grails-test-examples/app2/grails-app/controllers/app2/TestController.groovy => grails-forge/grails-forge-core/src/main/java/org/grails/forge/build/gradle/MavenLocalRepository.java (66%)
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/grails/GrailsConsole.java
 copy grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/logging/{Logback.java => LogbackConfig.java} (58%)
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/GrailsSpringSecurity.java
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/GrailsSpringSecurityUi.java
 rename grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command/DbmUpdateCommand.groovy => grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/PrimarySecurityFeature.java (59%)
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/SecurityFeature.java
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/SpringBootStarterSecurity.java
 copy grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/{lang/groovy/bootStrap.rocker.raw => security/template/role.rocker.raw} (61%)
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/template/securityApplicationGroovy.rocker.raw
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/template/securityConfig.rocker.raw
 copy grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/{lang/groovy/bootStrap.rocker.raw => security/template/user.rocker.raw} (53%)
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/template/userClassic.rocker.raw
 copy grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/{lang/groovy/bootStrap.rocker.raw => security/template/userClassicService.rocker.raw} (87%)
 copy grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/{lang/groovy/bootStrap.rocker.raw => security/template/userClassicSpec.rocker.raw} (54%)
 copy grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/{lang/groovy/bootStrap.rocker.raw => security/template/userController.rocker.raw} (80%)
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/template/userRole.rocker.raw
 copy grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/{lang/groovy/bootStrap.rocker.raw => security/template/userService.rocker.raw} (56%)
 copy grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/{lang/groovy/bootStrap.rocker.raw => security/template/userSpec.rocker.raw} (60%)
 create mode 100644 grails-forge/grails-forge-core/src/main/resources/i18n/messages_zh_TW.properties
 create mode 100644 grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/build/gradle/GradleRepositorySpec.groovy
 create mode 100644 grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/security/GrailsSpringSecuritySpec.groovy
 create mode 100644 grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/security/GrailsSpringSecurityUiSpec.groovy
 create mode 100644 grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/security/SpringBootStarterSecuritySpec.groovy
 create mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/commands/CliArtifactExtension.groovy
 create mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/commands/CliPublishingSupport.groovy
 create mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/commands/GrailsCliArtifactGradlePlugin.groovy
 create mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/commands/GrailsCliGradlePlugin.groovy
 create mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/commands/GrailsCliLibraryGradlePlugin.groovy
 create mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/util/ClasspathUtils.groovy
 create mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/commands/CliAutoDiscoverySpec.groovy
 create mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/commands/CliCompanionPublishingSpec.groovy
 create mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/commands/LegacyCommandTaskDiscoverySpec.groovy
 create mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/core/BomCliMultiprojectRaceFunctionalSpec.groovy
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/bom-cli-multiproject-race/consumer/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/bom-cli-multiproject-race/maven-repo/org/apache/grails/race-bom/1.0-race/race-bom-1.0-race.pom
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/bom-cli-multiproject-race/producer/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/bom-cli-multiproject-race/settings.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/app/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/gradle.properties
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/included-digit-bearing-plugin/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/included-digit-bearing-plugin/my-plugin-2fa-one/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/included-digit-bearing-plugin/my-plugin-2fa-snapshot/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/included-digit-bearing-plugin/my-plugin-2fa-timestamp/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/included-digit-bearing-plugin/my-plugin-2fa-unspecified/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/included-digit-bearing-plugin/settings.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/my-plugin/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/my-plugin/src/cli/java/com/example/HelloWorldCommand.java
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/my-plugin/src/cli/resources/META-INF/grails-cli.factories
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/renamed-plugin/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/renamed-plugin/src/cli/java/com/acme/AcmeCommand.java
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/settings.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-publishing/console-lib/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-publishing/custom-owner/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-publishing/gradle.properties
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-publishing/owner/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-publishing/plugin-a/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-publishing/plugin-b/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-publishing/resolver/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-publishing/settings.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/app/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/gradle.properties
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/legacy-command-api/build.gradle
 copy grails-scaffolding/src/main/groovy/grails/plugin/scaffolding/SkipBootstrap.groovy => grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/legacy-command-api/src/main/java/grails/dev/commands/ApplicationCommand.java (82%)
 copy grails-test-examples/spring-security/ui/extended/grails-app/assets/stylesheets/application.css => grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/legacy-command-api/src/main/java/grails/dev/commands/ExecutionContext.java (92%)
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/legacy-command-plugin/build.gradle
 rename grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command/DbmValidateCommand.groovy => grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/legacy-command-plugin/src/main/groovy/org/example/legacy/HelloLegacyAppCommand.groovy (68%)
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/legacy-command-plugin/src/main/resources/META-INF/grails.factories
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/settings.gradle
 create mode 100644 grails-gsp/grails-layout/src/test/groovy/org/apache/grails/web/layout/LayoutGrailsPluginSpec.groovy
 create mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/LocaleSelectConfiguredDefaultSpec.groovy
 create mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/LocaleSelectPinnedVariantSpec.groovy
 create mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/LocaleSelectRenderingSpec.groovy
 create mode 100644 grails-i18n/src/test/resources/messages_cs.properties
 create mode 100644 grails-interceptors/src/main/groovy/org/grails/plugins/web/interceptors/InterceptorBeanDefinitionsPostProcessor.groovy
 create mode 100644 grails-interceptors/src/test/groovy/org/grails/plugins/web/interceptors/InterceptorsGrailsPluginSpec.groovy
 delete mode 100644 grails-profiles/base/skeleton/grails-app/conf/logback-spring.xml
 create mode 100644 grails-profiles/base/skeleton/grails-app/i18n/messages_zh_TW.properties
 create mode 100644 grails-redis/src/main/groovy/grails/plugins/redis/RedisBeanDefinitionsPostProcessor.groovy
 create mode 100644 grails-redis/src/test/groovy/grails/plugins/redis/RedisBeanDefinitionsPostProcessorSpec.groovy
 create mode 100644 grails-rest-transforms/src/test/groovy/org/grails/plugins/web/rest/plugin/RestResponderGrailsPluginSpec.groovy
 rename grails-scaffolding/src/{main/groovy/grails/plugin/scaffolding => cli/groovy/org/apache/grails/scaffolding/cli}/CommandLineHelper.groovy (94%)
 rename grails-scaffolding/{grails-app/commands/scaffolding => src/cli/groovy/org/apache/grails/scaffolding/cli}/CreateScaffoldControllerCommand.groovy (94%)
 rename grails-scaffolding/{grails-app/commands/scaffolding => src/cli/groovy/org/apache/grails/scaffolding/cli}/CreateScaffoldServiceCommand.groovy (93%)
 rename grails-scaffolding/{grails-app/commands/scaffolding => src/cli/groovy/org/apache/grails/scaffolding/cli}/GenerateAllCommand.groovy (91%)
 rename grails-scaffolding/{grails-app/commands/scaffolding => src/cli/groovy/org/apache/grails/scaffolding/cli}/GenerateAsyncControllerCommand.groovy (94%)
 rename grails-scaffolding/{grails-app/commands/scaffolding => src/cli/groovy/org/apache/grails/scaffolding/cli}/GenerateControllerCommand.groovy (95%)
 rename grails-scaffolding/{grails-app/commands/scaffolding => src/cli/groovy/org/apache/grails/scaffolding/cli}/GenerateScaffoldAllCommand.groovy (95%)
 rename grails-scaffolding/{grails-app/commands/scaffolding => src/cli/groovy/org/apache/grails/scaffolding/cli}/GenerateServiceCommand.groovy (93%)
 rename grails-scaffolding/{grails-app/commands/scaffolding => src/cli/groovy/org/apache/grails/scaffolding/cli}/GenerateViewsCommand.groovy (94%)
 rename grails-scaffolding/{grails-app/commands/scaffolding => src/cli/groovy/org/apache/grails/scaffolding/cli}/InstallTemplatesCommand.groovy (93%)
 rename {grails-spring-security/plugin/grails-app/commands/grails.plugin.springsecurity => grails-scaffolding/src/cli/groovy/org/apache/grails/scaffolding/cli}/SkipBootstrap.groovy (95%)
 create mode 100644 grails-services/src/main/groovy/org/grails/plugins/services/ServiceBeanDefinitionsPostProcessor.groovy
 create mode 100644 grails-services/src/test/groovy/org/grails/plugins/services/ServicesGrailsPluginSpec.groovy
 create mode 100644 grails-shell-cli/src/main/groovy/org/grails/cli/profile/GrailsRepositoryOverrides.groovy
 create mode 100644 grails-shell-cli/src/test/groovy/org/grails/cli/GrailsCliProjectDetectionSpec.groovy
 create mode 100644 grails-shell-cli/src/test/groovy/org/grails/cli/compiler/grape/DefaultRepositorySystemSessionAutoConfigurationSpec.groovy
 create mode 100644 grails-shell-cli/src/test/groovy/org/grails/cli/profile/AbstractProfileSpec.groovy
 create mode 100644 grails-shell-cli/src/test/groovy/org/grails/cli/profile/GrailsRepositoryOverridesSpec.groovy
 create mode 100644 grails-shell-cli/src/test/groovy/org/grails/cli/profile/commands/factory/ApplicationContextCommandFactorySpec.groovy
 create mode 100644 grails-shell-cli/src/test/groovy/org/grails/cli/profile/commands/factory/LegacyPluginScriptCompatSpec.groovy
 create mode 100644 grails-shell-cli/src/test/groovy/org/grails/cli/profile/repository/MavenProfileRepositorySnapshotSpec.groovy
 rename grails-spring-security/oauth2/plugin/{grails-app/commands/grails/plugin/springsecurity/oauth2 => src/cli/groovy/org/apache/grails/security/oauth2/cli}/CommandLineHelper.groovy (95%)
 rename grails-spring-security/oauth2/plugin/{grails-app/commands/grails/plugin/springsecurity/oauth2 => src/cli/groovy/org/apache/grails/security/oauth2/cli}/InitOAuth2Command.groovy (97%)
 create mode 100644 grails-spring-security/plugin/grails-app/i18n/spring-security-core_cs.properties
 create mode 100644 grails-spring-security/plugin/grails-app/i18n/spring-security-core_da.properties
 create mode 100644 grails-spring-security/plugin/grails-app/i18n/spring-security-core_nl.properties
 create mode 100644 grails-spring-security/plugin/grails-app/i18n/spring-security-core_pl.properties
 create mode 100644 grails-spring-security/plugin/grails-app/i18n/spring-security-core_pt_PT.properties
 create mode 100644 grails-spring-security/plugin/grails-app/i18n/spring-security-core_sk.properties
 create mode 100644 grails-spring-security/plugin/grails-app/i18n/spring-security-core_th.properties
 create mode 100644 grails-spring-security/plugin/grails-app/i18n/spring-security-core_zh_CN.properties
 rename grails-spring-security/plugin/{grails-app/commands/grails.plugin.springsecurity => src/cli/groovy/org/apache/grails/security/cli}/CommandLineHelper.groovy (95%)
 rename grails-spring-security/plugin/{grails-app/commands/grails.plugin.springsecurity => src/cli/groovy/org/apache/grails/security/cli}/S2CreatePersistentTokenCommand.groovy (95%)
 rename grails-spring-security/plugin/{grails-app/commands/grails.plugin.springsecurity => src/cli/groovy/org/apache/grails/security/cli}/S2CreateRoleHierarchyEntryCommand.groovy (95%)
 rename grails-spring-security/plugin/{grails-app/commands/grails.plugin.springsecurity => src/cli/groovy/org/apache/grails/security/cli}/S2QuickstartCommand.groovy (99%)
 rename {grails-scaffolding/src/main/groovy/grails/plugin/scaffolding => grails-spring-security/plugin/src/cli/groovy/org/apache/grails/security/cli}/SkipBootstrap.groovy (95%)
 rename grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/grails/GrailsConsoleSpec.groovy => grails-spring-security/plugin/src/test/groovy/grails/plugin/springsecurity/LogoutControllerSpec.groovy (56%)
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/icons/error.svg
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/icons/info.svg
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/icons/role.svg
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/icons/user.svg
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/icons/users.svg
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/sort_asc.png
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/sort_asc_disabled.png
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/sort_both.png
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/sort_desc.png
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/sort_desc_disabled.png
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/javascripts/jquery/jquery.jdMenu.js
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/javascripts/jquery/jquery.positionBy.js
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/javascripts/spring-security-ui-register.js
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/elements/btn_left.gif
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/elements/btn_right.gif
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/elements/checkbox.gif
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/elements/input.gif
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/elements/input_left.gif
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/elements/input_right.gif
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/elements/radio.gif
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/elements/select_right.gif
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/gradient-alt.png
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/gradient-vertical.png
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/gradient.png
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/jquery.dataTables.css
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/jquery.jdMenu.css
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/jquery.jdMenu.slate.css
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/reset.css
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/spring-security-ui-common.css
 create mode 100644 grails-spring-security/ui/plugin/src/test/groovy/grails/plugin/springsecurity/ui/SecurityUiTagLibSpec.groovy
 create mode 100644 grails-test-examples/app2/src/integration-test/groovy/app2/GrailsUtilStackFiltererIntegrationSpec.groovy
 create mode 100644 grails-test-examples/app2/src/main/groovy/app2/RecordingStackTraceFilterer.groovy
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/assets/stylesheets/main.css
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/includes/_ajaxLogin.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/layouts/email.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/layouts/register.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/layouts/springSecurityUI.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/register/_forgotPasswordMail.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/register/_verifyRegistrationMail.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/register/forgotPassword.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/register/register.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/register/resetPassword.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/register/securityQuestions.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/role/create.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/role/edit.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/role/search.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/user/create.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/user/edit.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/user/search.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/assets/stylesheets/main.css
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/includes/_ajaxLogin.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/layouts/email.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/layouts/register.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/layouts/springSecurityUI.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/persistentLogin/edit.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/persistentLogin/search.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/register/_forgotPasswordMail.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/register/_verifyRegistrationMail.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/register/forgotPassword.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/register/register.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/register/resetPassword.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/register/securityQuestions.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/registrationCode/edit.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/registrationCode/search.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/requestmap/create.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/requestmap/edit.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/requestmap/search.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/role/create.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/role/edit.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/role/search.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/securityInfo/config.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/securityInfo/currentAuth.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/securityInfo/filterChains.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/securityInfo/logoutHandlers.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/securityInfo/mappings.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/securityInfo/providers.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/securityInfo/secureChannel.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/securityInfo/usercache.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/securityInfo/voters.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/user/create.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/user/edit.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/user/search.gsp
 create mode 100644 grails-testing-support-core/src/test/groovy/org/grails/testing/DefineBeansPluginHooksSpec.groovy
 create mode 100644 grails-url-mappings/src/main/groovy/org/grails/plugins/web/mapping/UrlMappingsBeanDefinitionsPostProcessor.groovy
 create mode 100644 grails-url-mappings/src/test/groovy/org/grails/plugins/web/mapping/UrlMappingsGrailsPluginSpec.groovy
 create mode 100644 grails-views-gson/src/test/groovy/grails/plugin/json/view/JsonViewGrailsPluginSpec.groovy
 create mode 100644 grails-views-markup/src/test/groovy/grails/plugin/markup/view/MarkupViewGrailsPluginSpec.groovy
 create mode 100644 grails-web-databinding/src/test/groovy/grails/web/databinding/LegacyBindableDefaultConfigSpec.groovy
 rename grails-web-url-mappings/src/{main/groovy/org/grails/web/mapping/reporting => cli/groovy/org/apache/grails/web/mapping/cli}/UrlMappingsReportCommand.groovy (89%)
 create mode 100644 grails-wrapper/src/test/groovy/grails/init/GrailsUpdaterSpec.groovy
 create mode 100644 grails-wrapper/src/test/groovy/grails/init/GrailsWrapperRepoSpec.groovy