This is an automated email from the ASF dual-hosted git repository. codeconsole pushed a commit to branch 8.0.x in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit 983e502f1c4e542a154c44e29a12b53a2346e0ab Merge: 6ee0ba756a 8444cc5466 Author: Scott Murphy <[email protected]> AuthorDate: Wed Aug 19 13:50:20 2026 -0700 Merge pull request #16094 from codeconsole/fix/aot-live-instance-beans-8.0.x Make Grails applications processable by Spring AOT (Leyden AOT Cache + GraalVM Native Image Support) .github/workflows/release-publish-docs.yml | 2 +- .github/workflows/release.yml | 2 +- .sdkmanrc | 2 +- dependencies.gradle | 8 +- etc/bin/Dockerfile | 2 +- .../grails/common/aot/AheadOfTimeProcessing.java | 54 +++ .../apache/grails/common/aot/RegistrableTypes.java | 251 +++++++++++ .../grails/common/aot/RegistrableTypesSpec.groovy | 194 ++++++++ .../controllers/aot/ControllerRuntimeHints.java | 92 ++++ .../main/resources/META-INF/spring/aot.factories | 2 + .../aot/ControllerRuntimeHintsSpec.groovy | 84 ++++ .../main/groovy/grails/boot/GrailsBanner.groovy | 446 ++++++++++++++++--- .../config/GrailsApplicationPostProcessor.groovy | 55 ++- .../boot/config/GrailsAutoConfiguration.groovy | 44 ++ .../aot/AbstractBeanDefinitionExcludeFilter.java | 48 ++ ...assesBeanFactoryInitializationAotProcessor.java | 155 +++++++ .../AutowireModeBeanRegistrationAotProcessor.java | 92 ++++ .../grails/core/aot/BeanRegistrarRuntimeHints.java | 73 +++ .../grails/core/aot/GrailsApiRuntimeHints.java | 90 ++++ .../grails/core/aot/GrailsBannerRuntimeHints.java | 70 +++ .../grails/core/aot/GrailsClosureRuntimeHints.java | 156 +++++++ .../core/aot/GrailsResourceRuntimeHints.java | 99 +++++ .../aot/GroovyExtensionModuleRuntimeHints.java | 152 +++++++ .../aot/VarargsBeanRegistrationAotProcessor.java | 193 ++++++++ .../org/grails/plugins/CoreGrailsPlugin.groovy | 59 ++- .../AbstractResourceLocatorPostProcessor.java | 18 +- .../additional-spring-configuration-metadata.json | 55 ++- .../grails-core/native-image.properties | 30 ++ .../main/resources/META-INF/spring/aot.factories | 17 + .../grails/boot/GrailsBannerColourSpec.groovy | 156 +++++++ .../grails/boot/GrailsBannerNativeMarkSpec.groovy | 225 ++++++++++ .../boot/GrailsBannerVersionLookupSpec.groovy | 226 ++++++++++ ...icationPostProcessorAnnotationConfigSpec.groovy | 98 ++++ .../GrailsAutoConfigurationArtefactsSpec.groovy | 79 ++++ .../AbstractBeanDefinitionExcludeFilterSpec.groovy | 79 ++++ ...eanFactoryInitializationAotProcessorSpec.groovy | 163 +++++++ ...wireModeBeanRegistrationAotProcessorSpec.groovy | 70 +++ .../core/aot/BeanRegistrarRuntimeHintsSpec.groovy | 85 ++++ .../core/aot/GrailsApiRuntimeHintsSpec.groovy | 88 ++++ .../core/aot/GrailsBannerRuntimeHintsSpec.groovy | 79 ++++ .../core/aot/GrailsClosureRuntimeHintsSpec.groovy | 101 +++++ .../core/aot/GrailsResourceRuntimeHintsSpec.groovy | 100 +++++ .../GroovyExtensionModuleRuntimeHintsSpec.groovy | 115 +++++ .../VarargsBeanRegistrationAotProcessorSpec.groovy | 162 +++++++ .../grails/plugins/CoreGrailsPluginAotSpec.groovy | 186 ++++++++ ...AbstractResourceLocatorPostProcessorSpec.groovy | 109 +++++ .../grails/boot/version-in-a-resource.properties | 5 + .../HibernateDatastoreSpringInitializer.groovy | 10 +- ...rnateDatastoreConnectionSourcesRegistrar.groovy | 7 +- ...eDatastoreConnectionSourcesRegistrarSpec.groovy | 20 +- .../HibernateDatastoreSpringInitializer.groovy | 10 +- .../MongoDbDataStoreSpringInitializer.groovy | 29 +- ...toreSpringInitializerBeanDefinitionsSpec.groovy | 85 ++++ .../Neo4jDataStoreSpringInitializer.groovy | 59 ++- .../grails/datamapping/aot/GormRuntimeHints.java | 112 +++++ .../bootstrap/AbstractDatastoreInitializer.groovy | 79 +++- ...igurableApplicationContextEventPublisher.groovy | 58 ++- .../main/resources/META-INF/spring/aot.factories | 2 + .../datamapping/aot/GormRuntimeHintsSpec.groovy | 81 ++++ ...actDatastoreInitializerConfigurationSpec.groovy | 190 ++++++++ ...ableApplicationContextEventPublisherSpec.groovy | 115 +++++ .../aot/ConstrainedPropertyRuntimeHints.java | 75 ++++ .../main/resources/META-INF/spring/aot.factories | 2 + .../aot/ConstrainedPropertyRuntimeHintsSpec.groovy | 69 +++ .../guide/conf/applicationClass/customizing.adoc | 34 +- .../src/en/guide/deployment/deploymentAot.adoc | 172 +++++++ .../en/guide/deployment/deploymentAotCache.adoc | 191 ++++++++ grails-doc/src/en/guide/introduction/whatsNew.adoc | 62 +++ grails-doc/src/en/guide/toc.yml | 2 + .../src/en/guide/upgrading/upgrading80x.adoc | 38 ++ .../src/main/resources/gsp/index.gsp | 8 +- grails-gradle/plugins/build.gradle | 7 + .../gradle/plugin/aot/AotCacheExtension.groovy | 67 +++ .../plugin/aot/ExtractApplicationTask.groovy | 96 ++++ .../plugin/aot/GenerateNativeMetadataTask.groovy | 188 ++++++++ .../plugin/aot/NativeMetadataExtension.groovy | 62 +++ .../apache/grails/gradle/plugin/aot/RunPort.groovy | 64 +++ .../grails/gradle/plugin/aot/StartupLog.groovy | 113 +++++ .../plugin/aot/TraceNativeMetadataTask.groovy | 495 +++++++++++++++++++++ .../gradle/plugin/aot/TrainAotCacheTask.groovy | 385 ++++++++++++++++ .../gradle/plugin/core/GrailsGradlePlugin.groovy | 355 +++++++++++++++ .../views/gsp/GroovyPageForkCompileTask.groovy | 22 +- .../plugin/aot/ExtractApplicationTaskSpec.groovy | 54 +++ .../aot/GenerateNativeMetadataTaskSpec.groovy | 182 ++++++++ .../grails/gradle/plugin/aot/RunPortSpec.groovy | 74 +++ .../grails/gradle/plugin/aot/StartupLogSpec.groovy | 129 ++++++ .../plugin/aot/TraceNativeMetadataTaskSpec.groovy | 345 ++++++++++++++ .../gradle/plugin/aot/TracedRunFixture.groovy | 138 ++++++ .../gradle/plugin/aot/TrainAotCacheTaskSpec.groovy | 383 ++++++++++++++++ .../gradle/plugin/aot/TrainingRunFixture.groovy | 66 +++ .../plugin/core/AssetClasspathPackagingSpec.groovy | 47 ++ .../core/GrailsNativeImageDefaultsSpec.groovy | 101 +++++ .../views/gsp/GroovyPageToolchainSpec.groovy | 2 +- .../asset-classpath-packaging/build.gradle | 42 ++ .../asset-classpath-packaging/gradle.properties | 2 + .../asset-classpath-packaging/settings.gradle | 1 + .../test-projects/native-defaults-aot/build.gradle | 10 + .../native-defaults-aot/gradle.properties | 1 + .../grails-app/conf/application.yml | 0 .../native-defaults-aot/settings.gradle | 1 + .../test-projects/native-defaults-off/build.gradle | 12 + .../native-defaults-off/gradle.properties | 1 + .../grails-app/conf/application.yml | 0 .../native-defaults-off/settings.gradle | 1 + .../test-projects/native-defaults-on/build.gradle | 10 + .../native-defaults-on/gradle.properties | 1 + .../grails-app/conf/application.yml | 0 .../native-defaults-on/settings.gradle | 1 + .../native-metadata-ordering/build.gradle | 24 + .../native-metadata-ordering/gradle.properties | 1 + .../grails-app/conf/application.yml | 0 .../grails-app/views/index.gsp | 3 + .../native-metadata-ordering/settings.gradle | 1 + .../gsp/aot/PrecompiledPageRuntimeHints.java | 52 +++ .../grails/gsp/io/DefaultGroovyPageLocator.java | 25 +- .../main/resources/META-INF/spring/aot.factories | 2 + .../gsp/aot/PrecompiledPageRuntimeHintsSpec.groovy | 64 +++ .../DefaultGroovyPageLocatorPrecompiledSpec.groovy | 125 ++++++ .../sitemesh3/GrailsSiteMeshViewResolver.java | 12 +- ...lsSiteMeshViewResolverServletContextSpec.groovy | 105 +++++ .../TagLibBeanDefinitionsPostProcessor.groovy | 95 ++++ .../grails/gsp/taglib/aot/TagLibRuntimeHints.java | 136 ++++++ .../plugins/web/GroovyPagesGrailsPlugin.groovy | 84 ++-- .../main/resources/META-INF/spring/aot.factories | 2 + .../TagLibBeanDefinitionsPostProcessorSpec.groovy | 117 +++++ .../gsp/taglib/aot/TagLibRuntimeHintsSpec.groovy | 84 ++++ .../GroovyPagesGrailsPluginPrecompiledSpec.groovy | 77 ++++ .../grails/mimetypes/aot/MimeTypeRuntimeHints.java | 57 +++ .../main/resources/META-INF/spring/aot.factories | 2 + .../web/skeleton/grails-app/views/index.gsp | 8 +- .../scaffolding/aot/ScaffoldingRuntimeHints.java | 54 +++ .../main/resources/META-INF/spring/aot.factories | 2 + .../src/main/templates/scaffolding/index.gsp | 2 +- grails-spring/build.gradle | 1 + .../spring/DefaultRuntimeSpringConfiguration.java | 32 +- ...DefaultRuntimeSpringConfigurationAotSpec.groovy | 96 ++++ grails-test-examples/aot/build.gradle | 96 ++++ .../aot/grails-app/conf/application.yml | 20 + .../controllers/aot/GreetingController.groovy | 30 ++ .../grails-app/controllers/aot/UrlMappings.groovy | 29 ++ .../aot/grails-app/init/aot/Application.groovy | 112 +++++ .../grails-app/services/aot/GreetingService.groovy | 30 ++ .../grails-app/taglib/aot/GreetingTagLib.groovy | 38 ++ .../aot/grails-app/views/greeting/index.gsp | 35 ++ .../databinding/aot/DataBindingRuntimeHints.java | 62 +++ .../main/resources/META-INF/spring/aot.factories | 2 + .../web/mapping/aot/UrlMappingRuntimeHints.java | 61 +++ .../main/resources/META-INF/spring/aot.factories | 2 + settings.gradle | 2 + 149 files changed, 11236 insertions(+), 185 deletions(-)
