diff --git a/dependencies.gradle b/dependencies.gradle index 0036e9d1b9b..a3fdc6dd62b 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -93,8 +93,8 @@ ext { 'selenium.version' : '4.38.0', 'sitemesh.version' : '2.6.0', 'spock.version' : '2.3-groovy-4.0', - 'starter-sitemesh.version' : '3.2.3', - 'spring-webmvc-sitemesh.version': '3.2.3', + 'starter-sitemesh.version' : '3.3.0-SNAPSHOT', + 'spring-webmvc-sitemesh.version': '3.3.0-SNAPSHOT', // Spring Boot 4 no longer manages spring-retry; pin it here so the // grails-shell-cli SpringRetryCompilerAutoConfiguration's unversioned // reference resolves and consumer apps using @Retryable get a known version. diff --git a/gradle/boot4-disabled-integration-test-config.gradle b/gradle/boot4-disabled-integration-test-config.gradle deleted file mode 100644 index e56dd57a002..00000000000 --- a/gradle/boot4-disabled-integration-test-config.gradle +++ /dev/null @@ -1,31 +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. - */ - -// TODO: BOOT4 - Integration tests disabled due to Spring Boot 4 incompatibilities. -// -// Modules applying this file have their integrationTest task disabled because of -// external plugin/library incompatibilities with Spring Boot 4 / Spring Framework 7. -// -// Known blockers: -// - SiteMesh3: Decorator/layout not compatible with Spring Framework 7 -// -// Re-enable each module's integrationTest when its blocking dependency is updated. -// Search for 'boot4-disabled-integration-test-config' to find all affected modules. - -tasks.named('integrationTest') { - enabled = false -} diff --git a/gradle/publish-root-config.gradle b/gradle/publish-root-config.gradle index 6757868df34..98d5b245ac3 100644 --- a/gradle/publish-root-config.gradle +++ b/gradle/publish-root-config.gradle @@ -72,7 +72,7 @@ def publishedProjects = [ 'grails-scaffolding', 'grails-services', 'grails-shell-cli', - // TODO: 'grails-sitemesh3', // Sitemesh3 has not been updated to support boot 4 + 'grails-sitemesh3', 'grails-spring', 'grails-taglib', 'grails-test-core', diff --git a/grails-forge/grails-forge-core/src/main/java/org/grails/forge/build/gradle/GradleRepository.java b/grails-forge/grails-forge-core/src/main/java/org/grails/forge/build/gradle/GradleRepository.java index 06ab59206b5..6b5a2538198 100644 --- a/grails-forge/grails-forge-core/src/main/java/org/grails/forge/build/gradle/GradleRepository.java +++ b/grails-forge/grails-forge-core/src/main/java/org/grails/forge/build/gradle/GradleRepository.java @@ -66,6 +66,17 @@ static Set getDefaultRepositories(String grailsVersion) { ), List.of(VersionType.SNAPSHOT) )); + repositories.add(new DefaultGradleRepository( + repositories.size(), + "https://central.sonatype.com/repository/maven-snapshots", + null, + List.of( + new VersionRegexRepoFilter( + "org[.]sitemesh.*", ".*", ".*-SNAPSHOT" + ) + ), + List.of(VersionType.SNAPSHOT) + )); repositories.add(new DefaultGradleRepository( repositories.size(), "https://repository.apache.org/content/groups/staging", diff --git a/grails-gsp/grails-sitemesh3/build.gradle b/grails-gsp/grails-sitemesh3/build.gradle index 676039b0355..5b600e9f5d0 100644 --- a/grails-gsp/grails-sitemesh3/build.gradle +++ b/grails-gsp/grails-sitemesh3/build.gradle @@ -23,7 +23,7 @@ plugins { id 'org.apache.grails.buildsrc.dependency-validator' id 'org.apache.grails.gradle.grails-plugin' id 'org.apache.grails.buildsrc.compile' - // TODO: id 'org.apache.grails.buildsrc.publish' + id 'org.apache.grails.buildsrc.publish' id 'org.apache.grails.buildsrc.sbom' id 'org.apache.grails.gradle.grails-code-style' } diff --git a/grails-shell-cli/src/main/groovy/org/grails/cli/profile/commands/CreateAppCommand.groovy b/grails-shell-cli/src/main/groovy/org/grails/cli/profile/commands/CreateAppCommand.groovy index be05ee4254c..61a22347a21 100644 --- a/grails-shell-cli/src/main/groovy/org/grails/cli/profile/commands/CreateAppCommand.groovy +++ b/grails-shell-cli/src/main/groovy/org/grails/cli/profile/commands/CreateAppCommand.groovy @@ -517,6 +517,10 @@ class CreateAppCommand extends ArgumentCompletingCommand implements ProfileRepos GrailsGradleRepository repository = new GrailsGradleRepository(url: 'https://repository.apache.org/content/groups/snapshots', snapshotsOnly: true) repository.includeOnly('org[.]apache[.](grails|groovy).*', '.*', '.*-SNAPSHOT') configuredRepositories.add(repository) + + GrailsGradleRepository sitemeshSnapshots = new GrailsGradleRepository(url: 'https://central.sonatype.com/repository/maven-snapshots', snapshotsOnly: true) + sitemeshSnapshots.includeOnly('org[.]sitemesh.*', '.*', '.*-SNAPSHOT') + configuredRepositories.add(sitemeshSnapshots) } configuredRepositories.unique() } diff --git a/settings.gradle b/settings.gradle index cf9363143c2..9414e2c1c43 100644 --- a/settings.gradle +++ b/settings.gradle @@ -164,14 +164,14 @@ include( // gsp 'grails-gsp-core', 'grails-gsp', - // TODO: 'grails-sitemesh3', // sitemesh3 does not support boot 4 at this time + 'grails-sitemesh3', 'grails-layout', 'grails-taglib', 'grails-web-gsp', 'grails-web-gsp-taglib', 'grails-web-jsp', 'grails-web-taglib', - // TODO: 'grails-gsp-spring-boot', // sitemesh3 does not support boot4 at this time + 'grails-gsp-spring-boot', 'grails-datastore-core', 'grails-datastore-web', @@ -235,14 +235,14 @@ project(':grails-dependencies-assets').projectDir = file('grails-dependencies/as project(':grails-gsp-core').projectDir = file('grails-gsp/core') project(':grails-gsp').projectDir = file('grails-gsp/plugin') -// TODO: project(':grails-sitemesh3').projectDir = file('grails-gsp/grails-sitemesh3') +project(':grails-sitemesh3').projectDir = file('grails-gsp/grails-sitemesh3') project(':grails-layout').projectDir = file('grails-gsp/grails-layout') project(':grails-taglib').projectDir = file('grails-gsp/grails-taglib') project(':grails-web-gsp').projectDir = file('grails-gsp/grails-web-gsp') project(':grails-web-gsp-taglib').projectDir = file('grails-gsp/grails-web-gsp-taglib') project(':grails-web-jsp').projectDir = file('grails-gsp/grails-web-jsp') project(':grails-web-taglib').projectDir = file('grails-gsp/grails-web-taglib') -// TODO: project(':grails-gsp-spring-boot').projectDir = file('grails-gsp/spring-boot') +project(':grails-gsp-spring-boot').projectDir = file('grails-gsp/spring-boot') // Data Mapping - Documentation include 'grails-data-docs-guide-developer'