Skip to content

Commit 8057f74

Browse files
authored
Merge pull request #15365 from apache/upgrade/gradle-9.3.1
Upgrade to Gradle 9.4.1 and Micronaut 4
2 parents 09843cd + 9f4831f commit 8057f74

98 files changed

Lines changed: 770 additions & 501 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.sdkmanrc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Keep java version synced with .github/workflows/release.yml and etc/bin/Dockerfile
22
java=21.0.7-librca
3-
# Keep gradle version synced with gradle.properties (gradleToolingApiVersion), all gradle-wrapper.properties files,
4-
# and grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/gradleWrapperProperties.rocker.raw
5-
gradle=8.14.4
3+
# Keep gradle version synced with gradle.properties (gradleToolingApiVersion).
4+
# Update the gradle-bootstrap project to propagate the version to all gradle-wrapper.properties files.
5+
gradle=9.4.1
66

build-logic/docs-core/build.gradle

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,9 @@ apply {
3838
dependencies {
3939
gradleConf gradleApi()
4040

41-
// grails-docs classes are used in Gradle builds,
42-
// so we must compile with Groovy 3 until Gradle upgrades to Groovy 4.
43-
compileOnly "org.codehaus.groovy:groovy:${GroovySystem.version}"
44-
compileOnly "org.codehaus.groovy:groovy-ant:${GroovySystem.version}"
41+
// grails-docs classes are used in Gradle builds, using Gradle's embedded Groovy version
42+
compileOnly "org.apache.groovy:groovy:${GroovySystem.version}"
43+
compileOnly "org.apache.groovy:groovy-ant:${GroovySystem.version}"
4544

4645
api "org.apache.commons:commons-text:${gradleBomDependencyVersions['commons-text.version']}"
4746
api "org.apache.ant:ant:${gradleBomDependencyVersions['ant.version']}"
@@ -56,7 +55,7 @@ dependencies {
5655
transitive = false
5756
}
5857

59-
testImplementation "org.codehaus.groovy:groovy-test-junit5:${GroovySystem.version}"
58+
testImplementation "org.apache.groovy:groovy-test-junit5:${GroovySystem.version}"
6059
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.12.2'
6160
testImplementation 'org.junit.platform:junit-platform-suite:1.12.2'
6261
testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.12.2'

build-logic/docs-core/src/main/groovy/grails/doc/ant/DocPublisherTask.groovy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
package grails.doc.ant
2020

21+
import groovy.ant.AntBuilder
2122
import org.apache.tools.ant.BuildException
2223
import org.apache.tools.ant.Project
2324
import org.apache.tools.ant.Task

build-logic/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/ExtractDependenciesTask.groovy

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,13 @@ import org.gradle.api.DefaultTask
2727
import org.gradle.api.GradleException
2828
import org.gradle.api.NamedDomainObjectProvider
2929
import org.gradle.api.artifacts.Configuration
30+
import org.gradle.api.artifacts.ConfigurationContainer
3031
import org.gradle.api.artifacts.Dependency
3132
import org.gradle.api.artifacts.DependencyConstraint
3233
import org.gradle.api.artifacts.ExcludeRule
3334
import org.gradle.api.artifacts.ModuleDependency
3435
import org.gradle.api.artifacts.component.ModuleComponentSelector
36+
import org.gradle.api.artifacts.dsl.DependencyHandler
3537
import org.gradle.api.artifacts.result.DependencyResult
3638
import org.gradle.api.artifacts.result.ResolvedDependencyResult
3739
import org.gradle.api.file.ConfigurableFileCollection
@@ -42,6 +44,7 @@ import org.gradle.api.tasks.CacheableTask
4244
import org.gradle.api.tasks.Classpath
4345
import org.gradle.api.tasks.Input
4446
import org.gradle.api.tasks.InputFiles
47+
import org.gradle.api.tasks.Internal
4548
import org.gradle.api.tasks.OutputFile
4649
import org.gradle.api.tasks.TaskAction
4750

@@ -83,17 +86,26 @@ abstract class ExtractDependenciesTask extends DefaultTask {
8386
@Input
8487
abstract MapProperty<String, String> getProjectCoordinateProperties()
8588

89+
// Captured at configuration time to avoid deprecated Task.project access at execution time.
90+
// See: https://docs.gradle.org/current/userguide/configuration_cache.html#config_cache:requirements:use_project_during_execution
91+
@Internal
92+
DependencyHandler dependencyHandler
93+
94+
@Internal
95+
ConfigurationContainer configurationContainer
96+
8697
void setConfiguration(NamedDomainObjectProvider<Configuration> config) {
8798
dependencyArtifacts.from(config)
8899
configurationName.set(config.name)
89100
}
90101

91-
ExtractDependenciesTask() {
92-
doFirst {
93-
if (!project.pluginManager.hasPlugin('java-platform')) {
94-
throw new GradleException(/The 'java-platform' plugin must be applied to the project to use this task./)
95-
}
96-
}
102+
/**
103+
* Captures project-scoped services at configuration time so they can be used
104+
* at execution time without accessing the deprecated Task.project property.
105+
*/
106+
void captureProjectServices(DependencyHandler dependencies, ConfigurationContainer configurations) {
107+
this.dependencyHandler = dependencies
108+
this.configurationContainer = configurations
97109
}
98110

99111
@TaskAction
@@ -115,7 +127,7 @@ abstract class ExtractDependenciesTask extends DefaultTask {
115127
propertyNameCalculator.addProject(coordinates.groupId, coordinates.artifactId, coordinates.version, entry.value)
116128
}
117129

118-
Configuration configuration = project.configurations.named(configurationName.get()).get()
130+
Configuration configuration = configurationContainer.named(configurationName.get()).get()
119131
if (!configuration.canBeResolved) {
120132
throw new GradleException("The configuration ${configuration.name} must be resolvable to use this task.")
121133
}
@@ -208,8 +220,8 @@ abstract class ExtractDependenciesTask extends DefaultTask {
208220
}
209221

210222
Properties populatePlatformDependencies(CoordinateVersionHolder bomCoordinates, List<CoordinateHolder> exclusionRules, Map<CoordinateHolder, ExtractedDependencyConstraint> constraints, boolean error = true, int level = 0) {
211-
Dependency bomDependency = project.dependencies.create("${bomCoordinates.coordinates}@pom")
212-
Configuration dependencyConfiguration = project.configurations.detachedConfiguration(bomDependency)
223+
Dependency bomDependency = dependencyHandler.create("${bomCoordinates.coordinates}@pom")
224+
Configuration dependencyConfiguration = configurationContainer.detachedConfiguration(bomDependency)
213225
File bomPomFile = dependencyConfiguration.singleFile
214226

215227
MavenXpp3Reader reader = new MavenXpp3Reader()
2.35 KB
Binary file not shown.

build-logic/gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# and grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/gradleWrapperProperties.rocker.raw
33
distributionBase=GRADLE_USER_HOME
44
distributionPath=wrapper/dists
5-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.4-bin.zip
5+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip
66
networkTimeout=10000
77
validateDistributionUrl=true
88
zipStoreBase=GRADLE_USER_HOME

build-logic/gradlew

Lines changed: 1 addition & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build-logic/gradlew.bat

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build-logic/plugins/src/main/groovy/org/apache/grails/buildsrc/PublishPlugin.groovy

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,14 @@ class PublishPlugin implements Plugin<Project> {
9292
task.group = 'publishing'
9393
task.outputs.dir(artifactsDir)
9494
task.dependsOn(project.tasks.withType(Jar))
95+
96+
// Capture publishing extension at configuration time to avoid Task.project access at execution time
97+
// See: https://docs.gradle.org/current/userguide/configuration_cache.html#config_cache:requirements:use_project_during_execution
98+
def publishingExtension = project.extensions.getByType(PublishingExtension)
99+
95100
task.doLast {
96101
Map<String, String> artifacts = [:]
97-
project.extensions.getByType(PublishingExtension).publications.withType(MavenPublication).each { MavenPublication publication ->
102+
publishingExtension.publications.withType(MavenPublication).each { MavenPublication publication ->
98103
publication.artifacts.each { MavenArtifact artifact ->
99104
if (!artifact.file.exists() || artifact.file.name in ['grails-plugin.xml', 'profile.yml']) {
100105
return

0 commit comments

Comments
 (0)