This is an automated email from the ASF dual-hosted git repository. jdaugherty pushed a commit to branch micronautTests in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit 774360a7bdaf73c006b6f382bdcf64d536a5e75c Author: James Daugherty <jdaughe...@jdresources.net> AuthorDate: Tue Jul 29 22:03:48 2025 -0400 WIP: switch to micronaut starter --- gradle.properties | 1 + .../src/main/groovy/grails/boot/GrailsApp.groovy | 20 ----- grails-dependencies/starter-web/build.gradle | 2 +- .../gradle/plugin/core/GrailsGradlePlugin.groovy | 22 +++--- .../views/gsp/GroovyPageForkCompileTask.groovy | 1 + grails-micronaut/build.gradle | 46 +++++++---- ...ner.groovy => GrailsMicronautBeanFilter.groovy} | 36 +++++---- .../micronaut/GrailsMicronautGrailsPlugin.groovy | 90 ++++++++++------------ .../micronaut/MicronautParentContextAdder.groovy | 88 --------------------- .../MicronautGroovyPropertySourceLoader.groovy | 2 +- .../MicronautYamlPropertySourceLoader.groovy | 2 +- grails-test-examples/micronaut/build.gradle | 59 ++++++-------- .../grails-app/init/micronaut/Application.groovy | 8 +- 13 files changed, 134 insertions(+), 243 deletions(-) diff --git a/gradle.properties b/gradle.properties index 67b0f2cd28..98ae84b24f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -57,6 +57,7 @@ org.gradle.daemon=true org.gradle.jvmargs=-Dfile.encoding=UTF-8 -Xmx5G # micronaut libraries not in the bom due to the potential for spring mismatches +micronautPlatformVersion=4.9.1 micronautVersion=4.9.7 micronautCacheVersion=5.3.0 micronautSpringVersion=5.11.0 diff --git a/grails-core/src/main/groovy/grails/boot/GrailsApp.groovy b/grails-core/src/main/groovy/grails/boot/GrailsApp.groovy index 73db55d501..4d6ede3cad 100644 --- a/grails-core/src/main/groovy/grails/boot/GrailsApp.groovy +++ b/grails-core/src/main/groovy/grails/boot/GrailsApp.groovy @@ -65,8 +65,6 @@ class GrailsApp extends SpringApplication { private static boolean developmentModeActive = false private static DirectoryWatcher directoryWatcher - private ApplicationContextCustomizer applicationContextCustomizer - boolean enableBeanCreationProfiler = false ConfigurableEnvironment configuredEnvironment @@ -121,10 +119,6 @@ class GrailsApp extends SpringApplication { setAllowBeanDefinitionOverriding(true) setAllowCircularReferences(true) ConfigurableApplicationContext applicationContext = super.createApplicationContext() - if (applicationContextCustomizer) { - ClassLoader applicationClassLoader = this.classLoader - applicationContextCustomizer.customizeContext(applicationContext, applicationClassLoader, configuredEnvironment) - } if (enableBeanCreationProfiler) { def processor = new BeanCreationProfilingPostProcessor() @@ -396,24 +390,10 @@ class GrailsApp extends SpringApplication { * specified sources using default settings and user supplied arguments. * @param sources the sources to load * @param args the application arguments (usually passed from a Java main method) - * @param applicationContextCustomizer optional logic to customize the created application context, such as adding a parent context * @return the running {@link org.springframework.context.ApplicationContext} */ static ConfigurableApplicationContext run(Class<?>[] sources, String[] args) { - run(sources, args, null) - } - - /** - * Static helper that can be used to run a {@link GrailsApp} from the - * specified sources using default settings user supplied arguments. - * @param sources the sources to load - * @param args the application arguments (usually passed from a Java main method) - * @param applicationContextCustomizer optional logic to customize the created application context, such as adding a parent context - * @return the running {@link org.springframework.context.ApplicationContext} - */ - static ConfigurableApplicationContext run(Class<?>[] sources, String[] args, ApplicationContextCustomizer applicationContextCustomizer) { GrailsApp grailsApp = new GrailsApp(sources) - grailsApp.applicationContextCustomizer = applicationContextCustomizer grailsApp.banner = new ResourceBanner(new ClassPathResource(GRAILS_BANNER)) return grailsApp.run(args) } diff --git a/grails-dependencies/starter-web/build.gradle b/grails-dependencies/starter-web/build.gradle index fec01d0cde..e12252310f 100644 --- a/grails-dependencies/starter-web/build.gradle +++ b/grails-dependencies/starter-web/build.gradle @@ -47,7 +47,7 @@ def configurations = [ ':grails-gsp', ':grails-i18n', ':grails-interceptors', - ':grails-layout', // layout will be the default because it's fully functional while sitemesh3 still has issues + System.getenv('SITEMESH3_TESTING_ENABLED') == 'true' ? ':grails-sitemesh3' : ':grails-layout', ':grails-logging', ':grails-rest-transforms', ':grails-services', diff --git a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy index 10d292071e..04ce07d343 100644 --- a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy +++ b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy @@ -387,17 +387,17 @@ class GrailsGradlePlugin extends GroovyPlugin { @CompileStatic protected void configureMicronaut(Project project) { final String micronautVersion = project.properties['micronautVersion'] - if (micronautVersion) { - project.configurations.configureEach({ Configuration configuration -> - configuration.resolutionStrategy.eachDependency({ DependencyResolveDetails details -> - String dependencyName = details.requested.name - String group = details.requested.group - if (group == 'io.micronaut' && dependencyName.startsWith('micronaut')) { - details.useVersion(micronautVersion) - } - } as Action<DependencyResolveDetails>) - } as Action<Configuration>) - } +// if (micronautVersion) { +// project.configurations.configureEach({ Configuration configuration -> +// configuration.resolutionStrategy.eachDependency({ DependencyResolveDetails details -> +// String dependencyName = details.requested.name +// String group = details.requested.group +// if (group == 'io.micronaut' && dependencyName.startsWith('micronaut')) { +// details.useVersion(micronautVersion) +// } +// } as Action<DependencyResolveDetails>) +// } as Action<Configuration>) +// } } @CompileStatic diff --git a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/views/gsp/GroovyPageForkCompileTask.groovy b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/views/gsp/GroovyPageForkCompileTask.groovy index 17104785d4..60f11a5e69 100644 --- a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/views/gsp/GroovyPageForkCompileTask.groovy +++ b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/views/gsp/GroovyPageForkCompileTask.groovy @@ -133,6 +133,7 @@ abstract class GroovyPageForkCompileTask extends AbstractCompile { void execute(JavaExecSpec javaExecSpec) { javaExecSpec.mainClass.set(getCompilerName()) javaExecSpec.setClasspath(getClasspath()) + //javaExecSpec.setJvmArgs(['-Xmx2g', '-Xdebug', '-Xnoagent','-Djava.compiler=NONE', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005']) def jvmArgs = compileOptions.forkOptions.jvmArgs if (jvmArgs) { diff --git a/grails-micronaut/build.gradle b/grails-micronaut/build.gradle index 95bfce91a5..6a5fdcf725 100644 --- a/grails-micronaut/build.gradle +++ b/grails-micronaut/build.gradle @@ -26,28 +26,38 @@ plugins { version = projectVersion group = 'org.apache.grails' -dependencies { - implementation platform(project(':grails-bom')) - - annotationProcessor "io.micronaut.cache:micronaut-cache-core:$micronautCacheVersion" - annotationProcessor "io.micronaut.spring:micronaut-spring-annotation:$micronautSpringVersion" - annotationProcessor "io.micronaut.spring:micronaut-spring-boot-annotation:$micronautSpringVersion" - annotationProcessor "io.micronaut:micronaut-inject-java:$micronautVersion" +// force a local build version for debugging +//project.configurations.configureEach({ Configuration configuration -> +// configuration.resolutionStrategy.eachDependency({ DependencyResolveDetails details -> +// String dependencyName = details.requested.name +// String group = details.requested.group +// if (group == 'io.micronaut' && dependencyName.startsWith('micronaut-core-processor')) { +// logger.lifecycle("Forcing Micronaut Core Processor version to 4.9.99 for Grails Micronaut plugin") +// details.useVersion('4.9.99') +// } +// } as Action<DependencyResolveDetails>) +//} as Action<Configuration>) - implementation "io.micronaut.spring:micronaut-spring-annotation:$micronautSpringVersion" - implementation "io.micronaut:micronaut-inject-groovy:$micronautVersion" - implementation "io.micronaut:micronaut-inject-java:$micronautVersion" - - api "io.micronaut:micronaut-inject:$micronautVersion" - api "io.micronaut:micronaut-runtime:$micronautVersion" - api "io.micronaut.spring:micronaut-spring-context:$micronautSpringVersion", { - exclude group:"org.slf4j", module: "slf4j-simple" - } +dependencies { + annotationProcessor platform(project(':grails-bom')) + annotationProcessor platform("io.micronaut.platform:micronaut-platform:$micronautPlatformVersion") + annotationProcessor 'io.micronaut.cache:micronaut-cache-core' + annotationProcessor 'io.micronaut.spring:micronaut-spring-annotation' + annotationProcessor 'io.micronaut.spring:micronaut-spring-boot-annotation' + annotationProcessor 'io.micronaut:micronaut-inject-java' + annotationProcessor 'jakarta.annotation:jakarta.annotation-api' + //annotationProcessor 'io.micronaut:micronaut-core-processor' - api "io.micronaut.cache:micronaut-cache-core:$micronautCacheVersion", { + api platform("io.micronaut.platform:micronaut-platform:$micronautPlatformVersion") + api 'io.micronaut.spring:micronaut-spring-annotation' + api 'io.micronaut.spring:micronaut-spring-boot-starter' + compileOnlyApi 'io.micronaut:micronaut-inject-groovy' + compileOnlyApi 'io.micronaut:micronaut-inject-java' + api "io.micronaut.cache:micronaut-cache-core", { exclude group:"org.slf4j", module: "slf4j-simple" } + implementation platform(project(':grails-bom')) compileOnly project(':grails-core') // Logging @@ -55,8 +65,10 @@ dependencies { compileOnly 'org.slf4j:jcl-over-slf4j' // Testing + testImplementation platform(project(':grails-bom')) testImplementation 'org.slf4j:slf4j-simple' testImplementation('org.spockframework:spock-core') { transitive = false } + // Required by Spock's Mocking testRuntimeOnly 'net.bytebuddy:byte-buddy' testImplementation 'org.objenesis:objenesis' diff --git a/grails-micronaut/src/main/groovy/org/apache/grails/micronaut/MicronautShutdownListener.groovy b/grails-micronaut/src/main/groovy/org/apache/grails/micronaut/GrailsMicronautBeanFilter.groovy similarity index 50% rename from grails-micronaut/src/main/groovy/org/apache/grails/micronaut/MicronautShutdownListener.groovy rename to grails-micronaut/src/main/groovy/org/apache/grails/micronaut/GrailsMicronautBeanFilter.groovy index f7c71659fd..1b80cc8669 100644 --- a/grails-micronaut/src/main/groovy/org/apache/grails/micronaut/MicronautShutdownListener.groovy +++ b/grails-micronaut/src/main/groovy/org/apache/grails/micronaut/GrailsMicronautBeanFilter.groovy @@ -16,23 +16,31 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.grails.micronaut -import groovy.transform.CompileStatic -import io.micronaut.context.ApplicationContext -import org.springframework.context.ApplicationListener -import org.springframework.context.event.ContextStoppedEvent +package org.apache.grails.micronaut -@CompileStatic -class MicronautShutdownListener implements ApplicationListener<ContextStoppedEvent> { - final ApplicationContext micronautApplicationContext +import io.micronaut.core.annotation.Introspected +import io.micronaut.core.annotation.NonNull +import io.micronaut.inject.BeanDefinition +import io.micronaut.spring.boot.starter.MicronautBeanFilter +import org.springframework.core.convert.ConversionService +import org.springframework.core.env.ConfigurableEnvironment +import org.springframework.core.env.Environment +import org.springframework.core.env.PropertyResolver - MicronautShutdownListener(ApplicationContext micronautApplicationContext) { - this.micronautApplicationContext = micronautApplicationContext - } +@Introspected +class GrailsMicronautBeanFilter implements MicronautBeanFilter { @Override - void onApplicationEvent(ContextStoppedEvent event) { - this.micronautApplicationContext.stop() + boolean excludes(@NonNull BeanDefinition<?> definition) { + if(definition.beanType in [ConversionService, Environment, PropertyResolver, ConfigurableEnvironment]) { + return true + } + + if (definition.beanType.name == 'com.fasterxml.jackson.databind.ObjectMapper') { + return true + } + + return false } -} \ No newline at end of file +} diff --git a/grails-micronaut/src/main/groovy/org/apache/grails/micronaut/GrailsMicronautGrailsPlugin.groovy b/grails-micronaut/src/main/groovy/org/apache/grails/micronaut/GrailsMicronautGrailsPlugin.groovy index 0d3199a94c..3a62c6f2e9 100644 --- a/grails-micronaut/src/main/groovy/org/apache/grails/micronaut/GrailsMicronautGrailsPlugin.groovy +++ b/grails-micronaut/src/main/groovy/org/apache/grails/micronaut/GrailsMicronautGrailsPlugin.groovy @@ -19,16 +19,8 @@ package org.apache.grails.micronaut -import grails.plugins.GrailsPlugin -import grails.plugins.GrailsPluginManager import grails.plugins.Plugin import groovy.util.logging.Slf4j -import io.micronaut.context.env.AbstractPropertySourceLoader -import io.micronaut.context.env.Environment -import io.micronaut.context.env.PropertySource -import io.micronaut.spring.context.env.MicronautEnvironment -import org.springframework.context.ConfigurableApplicationContext -import org.springframework.core.env.ConfigurableEnvironment @Slf4j class GrailsMicronautGrailsPlugin extends Plugin { @@ -36,45 +28,45 @@ class GrailsMicronautGrailsPlugin extends Plugin { def grailsVersion = '7.0.0-SNAPSHOT > *' def title = '' - @Override - void doWithApplicationContext() { - String[] beanNames = applicationContext.getBeanNamesForType(GrailsPluginManager) - GrailsPluginManager pluginManagerFromContext = beanNames.length ? - applicationContext.getBean(GrailsPluginManager) : - null - - if (!pluginManagerFromContext && !pluginManager) { - // No plugin managers to search for plugin configurations - return - } - - ConfigurableApplicationContext parentApplicationContext = (ConfigurableApplicationContext) applicationContext.parent - if (!parentApplicationContext) { - // No Micronaut parent context to load configurations to - return - } - - ConfigurableEnvironment parentContextEnv = parentApplicationContext.getEnvironment() - if (parentContextEnv instanceof MicronautEnvironment) { - if (log.isDebugEnabled()) { - log.debug("Loading configurations from the plugins to the parent Micronaut context") - } - final Environment micronautEnv = ((Environment) parentContextEnv.getEnvironment()) - final GrailsPlugin[] plugins = pluginManager.allPlugins - final GrailsPlugin[] pluginsFromContext = pluginManagerFromContext ? pluginManagerFromContext.allPlugins : new GrailsPlugin[] {} - Integer priority = AbstractPropertySourceLoader.DEFAULT_POSITION - [plugins, pluginsFromContext].each { GrailsPlugin[] pluginsToProcess -> - Arrays.stream(pluginsToProcess) - .filter({ GrailsPlugin plugin -> plugin.propertySource != null }) - .forEach({ GrailsPlugin plugin -> - if (log.isDebugEnabled()) { - log.debug("Loading configurations from {} plugin to the parent Micronaut context", plugin.name) - } - micronautEnv.addPropertySource(PropertySource.of("grails.plugins.$plugin.name", (Map) plugin.propertySource.source, --priority)) - }) - } - micronautEnv.refresh() - applicationContext.setParent(parentApplicationContext) - } - } +// @Override +// void doWithApplicationContext() { +// String[] beanNames = applicationContext.getBeanNamesForType(GrailsPluginManager) +// GrailsPluginManager pluginManagerFromContext = beanNames.length ? +// applicationContext.getBean(GrailsPluginManager) : +// null +// +// if (!pluginManagerFromContext && !pluginManager) { +// // No plugin managers to search for plugin configurations +// return +// } +// +// ConfigurableApplicationContext parentApplicationContext = (ConfigurableApplicationContext) applicationContext.parent +// if (!parentApplicationContext) { +// // No Micronaut parent context to load configurations to +// return +// } +// +// ConfigurableEnvironment parentContextEnv = parentApplicationContext.getEnvironment() +// if (parentContextEnv instanceof MicronautEnvironment) { +// if (log.isDebugEnabled()) { +// log.debug("Loading configurations from the plugins to the parent Micronaut context") +// } +// final Environment micronautEnv = ((Environment) parentContextEnv.getEnvironment()) +// final GrailsPlugin[] plugins = pluginManager.allPlugins +// final GrailsPlugin[] pluginsFromContext = pluginManagerFromContext ? pluginManagerFromContext.allPlugins : new GrailsPlugin[] {} +// Integer priority = AbstractPropertySourceLoader.DEFAULT_POSITION +// [plugins, pluginsFromContext].each { GrailsPlugin[] pluginsToProcess -> +// Arrays.stream(pluginsToProcess) +// .filter({ GrailsPlugin plugin -> plugin.propertySource != null }) +// .forEach({ GrailsPlugin plugin -> +// if (log.isDebugEnabled()) { +// log.debug("Loading configurations from {} plugin to the parent Micronaut context", plugin.name) +// } +// micronautEnv.addPropertySource(PropertySource.of("grails.plugins.$plugin.name", (Map) plugin.propertySource.source, --priority)) +// }) +// } +// micronautEnv.refresh() +// applicationContext.setParent(parentApplicationContext) +// } +// } } diff --git a/grails-micronaut/src/main/groovy/org/apache/grails/micronaut/MicronautParentContextAdder.groovy b/grails-micronaut/src/main/groovy/org/apache/grails/micronaut/MicronautParentContextAdder.groovy deleted file mode 100644 index 6466fc8b98..0000000000 --- a/grails-micronaut/src/main/groovy/org/apache/grails/micronaut/MicronautParentContextAdder.groovy +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.grails.micronaut - -import grails.boot.ApplicationContextCustomizer -import groovy.transform.CompileStatic -import groovy.util.logging.Slf4j -import io.micronaut.context.ApplicationContextConfiguration -import io.micronaut.context.DefaultApplicationContext -import io.micronaut.core.reflect.ClassUtils -import io.micronaut.spring.context.factory.MicronautBeanFactoryConfiguration -import org.springframework.context.ConfigurableApplicationContext -import org.springframework.core.convert.ConversionService -import org.springframework.core.env.ConfigurableEnvironment -import org.springframework.core.env.Environment -import org.springframework.core.env.PropertyResolver - -/** - * Helper class to set the micronaut context as the parent to the Grails applicationContext - */ -@Slf4j -@CompileStatic -class MicronautParentContextAdder implements ApplicationContextCustomizer { - - @Override - void customizeContext(ConfigurableApplicationContext applicationContext, ClassLoader applicationClassLoader, ConfigurableEnvironment configuredEnvironment) { - def now = System.currentTimeMillis() - ApplicationContextConfiguration micronautConfiguration = new ApplicationContextConfiguration() { - - @Override - List<String> getEnvironments() { - if (configuredEnvironment != null) { - return configuredEnvironment.getActiveProfiles().toList() - } else { - return Collections.emptyList() - } - } - - @Override - Optional<Boolean> getDeduceEnvironments() { - return Optional.of(false) - } - - @Override - ClassLoader getClassLoader() { - return applicationClassLoader - } - } - - List beanExcludes = [] - beanExcludes.add(ConversionService.class) - beanExcludes.add(Environment.class) - beanExcludes.add(PropertyResolver.class) - beanExcludes.add(ConfigurableEnvironment.class) - def objectMapper = ClassUtils.forName('com.fasterxml.jackson.databind.ObjectMapper', applicationClassLoader).orElse(null) - if (objectMapper != null) { - beanExcludes.add(objectMapper) - } - def micronautContext = new DefaultApplicationContext(micronautConfiguration); - micronautContext - .environment - .addPropertySource('grails-config', [(MicronautBeanFactoryConfiguration.PREFIX + '.bean-excludes'): (Object) beanExcludes]) - micronautContext.start() - ConfigurableApplicationContext parentContext = micronautContext.getBean(ConfigurableApplicationContext) - applicationContext.setParent( - parentContext - ) - applicationContext.addApplicationListener(new MicronautShutdownListener(micronautContext)) - log.info('Started Micronaut Parent Application Context in {}ms', System.currentTimeMillis() - now) - } -} diff --git a/grails-micronaut/src/main/groovy/org/apache/grails/micronaut/config/MicronautGroovyPropertySourceLoader.groovy b/grails-micronaut/src/main/groovy/org/apache/grails/micronaut/config/MicronautGroovyPropertySourceLoader.groovy index 3a7ce891de..ca5f07cf6a 100644 --- a/grails-micronaut/src/main/groovy/org/apache/grails/micronaut/config/MicronautGroovyPropertySourceLoader.groovy +++ b/grails-micronaut/src/main/groovy/org/apache/grails/micronaut/config/MicronautGroovyPropertySourceLoader.groovy @@ -17,7 +17,7 @@ * under the License. */ -package org.apache.grails.micronaut +package org.apache.grails.micronaut.config import grails.plugins.GrailsPlugin import grails.util.Environment diff --git a/grails-micronaut/src/main/groovy/org/apache/grails/micronaut/config/MicronautYamlPropertySourceLoader.groovy b/grails-micronaut/src/main/groovy/org/apache/grails/micronaut/config/MicronautYamlPropertySourceLoader.groovy index 9b51523959..b0e0bd0571 100644 --- a/grails-micronaut/src/main/groovy/org/apache/grails/micronaut/config/MicronautYamlPropertySourceLoader.groovy +++ b/grails-micronaut/src/main/groovy/org/apache/grails/micronaut/config/MicronautYamlPropertySourceLoader.groovy @@ -17,7 +17,7 @@ * under the License. */ -package org.grails.core.cfg +package org.apache.grails.micronaut.config import grails.plugins.GrailsPlugin import grails.util.Environment diff --git a/grails-test-examples/micronaut/build.gradle b/grails-test-examples/micronaut/build.gradle index 91760fc76f..7f2e5a38ee 100644 --- a/grails-test-examples/micronaut/build.gradle +++ b/grails-test-examples/micronaut/build.gradle @@ -20,8 +20,9 @@ version = '0.1' group = 'micronaut' -apply plugin:'org.apache.grails.gradle.grails-web' -apply plugin:'cloud.wondrify.asset-pipeline' +apply plugin: 'org.apache.grails.gradle.grails-plugin' +//apply plugin: 'org.apache.grails.gradle.grails-web' +apply plugin: 'cloud.wondrify.asset-pipeline' // The grails-gsp Gradle plugin is not needed for running the functional tests. // It is applied as a smoke test to check that compiling gsp @@ -31,47 +32,24 @@ apply plugin: 'org.apache.grails.gradle.grails-gsp' dependencies { implementation platform(project(':grails-bom')) - implementation 'org.springframework.boot:spring-boot-starter-logging' - implementation 'org.springframework.boot:spring-boot-autoconfigure' - implementation 'org.apache.grails:grails-core' - implementation 'org.springframework.boot:spring-boot-starter-actuator' - implementation 'org.springframework.boot:spring-boot-starter-tomcat' + implementation 'org.apache.grails:grails-dependencies-starter-web' implementation 'org.apache.grails:grails-micronaut' - implementation 'org.apache.grails:grails-web-boot' - if(System.getenv('SITEMESH3_TESTING_ENABLED') == 'true') { - implementation 'org.apache.grails:grails-sitemesh3' - } - else { - implementation 'org.apache.grails:grails-layout' - } - implementation 'org.apache.grails:grails-logging' - implementation 'org.apache.grails:grails-rest-transforms' - implementation 'org.apache.grails:grails-databinding' - implementation 'org.apache.grails:grails-i18n' - implementation 'org.apache.grails:grails-services' - implementation 'org.apache.grails:grails-url-mappings' - implementation 'org.apache.grails:grails-interceptors' - implementation 'org.apache.grails:grails-cache' - implementation 'org.apache.grails:grails-async' - implementation 'org.apache.grails:grails-scaffolding' - implementation 'org.apache.grails:grails-events' - implementation 'org.apache.grails:grails-data-hibernate5' - implementation 'org.apache.grails:grails-gsp' - compileOnly "io.micronaut:micronaut-inject-groovy:$micronautVersion" + +// annotationProcessor platform("io.micronaut.platform:micronaut-platform:$micronautPlatformVersion") +// annotationProcessor 'io.micronaut.cache:micronaut-cache-core' +// annotationProcessor 'io.micronaut.spring:micronaut-spring-annotation' +// annotationProcessor 'io.micronaut.spring:micronaut-spring-boot-annotation' +// annotationProcessor 'io.micronaut:micronaut-inject-java' +// annotationProcessor 'jakarta.annotation:jakarta.annotation-api' testAndDevelopmentOnly platform(project(':grails-bom')) - testAndDevelopmentOnly 'org.webjars.npm:bootstrap' - testAndDevelopmentOnly 'org.webjars.npm:jquery' - testAndDevelopmentOnly "io.micronaut:micronaut-inject-groovy:$micronautVersion" + testAndDevelopmentOnly 'org.apache.grails:grails-dependencies-assets' - console 'org.apache.grails:grails-console' - profile 'org.apache.grails.profiles:web' runtimeOnly 'com.h2database:h2' runtimeOnly 'org.apache.tomcat:tomcat-jdbc' runtimeOnly 'cloud.wondrify:asset-pipeline-grails' - testImplementation 'org.apache.grails:grails-testing-support-datamapping' - testImplementation 'org.mockito:mockito-core' - testImplementation 'org.apache.grails:grails-testing-support-web' + + testImplementation 'org.apache.grails:grails-dependencies-test' integrationTestImplementation testFixtures('org.apache.grails:grails-geb') } @@ -92,4 +70,11 @@ apply { from rootProject.layout.projectDirectory.file('gradle/java-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-webjar-asset-config.gradle') from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle') -} \ No newline at end of file +} + +//grails { +// springDependencyManagement = false +//} +//tasks.withType(GroovyCompile).configureEach { +// it.groovyOptions.forkOptions.jvmArgs = ["-Xdebug", "-Xnoagent", "-Djava.compiler=NONE", "-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"] +//} \ No newline at end of file diff --git a/grails-test-examples/micronaut/grails-app/init/micronaut/Application.groovy b/grails-test-examples/micronaut/grails-app/init/micronaut/Application.groovy index 8f1da48215..c694fda2f2 100644 --- a/grails-test-examples/micronaut/grails-app/init/micronaut/Application.groovy +++ b/grails-test-examples/micronaut/grails-app/init/micronaut/Application.groovy @@ -19,17 +19,17 @@ package micronaut -import grails.boot.ApplicationContextCustomizer import grails.boot.GrailsApp import grails.boot.config.GrailsAutoConfiguration -import org.apache.grails.micronaut.MicronautParentContextAdder import groovy.transform.CompileStatic +import io.micronaut.spring.boot.starter.EnableMicronaut +import org.apache.grails.micronaut.GrailsMicronautBeanFilter @CompileStatic +@EnableMicronaut(filter = GrailsMicronautBeanFilter) class Application extends GrailsAutoConfiguration { static void main(String[] args) { - def adder = new MicronautParentContextAdder() - GrailsApp.run([Application] as Class[], args, adder as ApplicationContextCustomizer) + GrailsApp.run(Application, args) } } \ No newline at end of file