Skip to content

Commit 410fe21

Browse files
artembilanspring-builds
authored andcommitted
Fix Gradle deprecations
* Use `optional` configuration with variants instead of `feature` * Use `io.freefair.aggregate-javadoc` * Upgrade to Gradle `8.9` * Some other minor ode clean in Gradle configs (cherry picked from commit 4c1ac20)
1 parent 10f9726 commit 410fe21

File tree

6 files changed

+105
-80
lines changed

6 files changed

+105
-80
lines changed

build.gradle

+68-49
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ buildscript {
22
ext.kotlinVersion = '1.9.25'
33
ext.isCI = System.getenv('GITHUB_ACTION')
44
repositories {
5-
mavenCentral()
65
gradlePluginPortal()
7-
maven { url 'https://repo.spring.io/plugins-release-local' }
6+
mavenCentral()
87
if (version.endsWith('SNAPSHOT')) {
98
maven { url 'https://repo.spring.io/snapshot' }
109
}
@@ -17,12 +16,12 @@ buildscript {
1716

1817
plugins {
1918
id 'base'
20-
id 'project-report'
2119
id 'idea'
2220
id 'org.ajoberstar.grgit' version '5.2.2'
2321
id 'io.spring.nohttp' version '0.0.11'
2422
id 'io.spring.dependency-management' version '1.1.6' apply false
2523
id 'com.github.spotbugs' version '6.0.19'
24+
id 'io.freefair.aggregate-javadoc' version '8.6'
2625
}
2726

2827
apply plugin: 'io.spring.nohttp'
@@ -122,36 +121,55 @@ allprojects {
122121

123122
configure(javaProjects) { subproject ->
124123
apply plugin: 'java-library'
125-
apply plugin: 'java'
126-
apply from: "${rootProject.projectDir}/gradle/publish-maven.gradle"
127124
apply plugin: 'eclipse'
128125
apply plugin: 'idea'
129126
apply plugin: 'checkstyle'
130127
apply plugin: 'kotlin'
131128
apply plugin: 'kotlin-spring'
132129

130+
apply from: "${rootProject.projectDir}/gradle/publish-maven.gradle"
131+
132+
def scopeAttribute = Attribute.of('dependency.scope', String)
133+
134+
configurations {
135+
optional {
136+
attributes {
137+
attribute(scopeAttribute, 'optional')
138+
}
139+
}
140+
141+
compileClasspath.extendsFrom(optional)
142+
testCompileClasspath.extendsFrom(optional)
143+
testRuntimeClasspath.extendsFrom(optional)
144+
}
145+
146+
components.java.addVariantsFromConfiguration(configurations.optional) {
147+
mapToOptional()
148+
}
149+
133150
java {
134151
withJavadocJar()
135152
withSourcesJar()
136-
registerFeature('optional') {
137-
usingSourceSet(sourceSets.main)
138-
}
139153
}
140154

141155
compileJava {
142-
sourceCompatibility = 17
143-
targetCompatibility = 17
156+
options.release = 17
144157
}
145158

146159
compileTestJava {
147-
sourceCompatibility = 17
160+
sourceCompatibility = JavaVersion.VERSION_17
161+
targetCompatibility = JavaVersion.VERSION_17
148162
options.encoding = 'UTF-8'
149163
}
150164

151165
eclipse.project.natures += 'org.springframework.ide.eclipse.core.springnature'
152166

153167
// dependencies that are common across all java projects
154168
dependencies {
169+
attributesSchema {
170+
attribute(scopeAttribute)
171+
}
172+
155173
def spotbugsAnnotations = "com.github.spotbugs:spotbugs-annotations:${spotbugs.toolVersion.get()}"
156174
compileOnly spotbugsAnnotations
157175
testCompileOnly spotbugsAnnotations
@@ -171,7 +189,7 @@ configure(javaProjects) { subproject ->
171189
exclude group: 'org.hamcrest'
172190
}
173191
testImplementation "org.hamcrest:hamcrest-core:$hamcrestVersion"
174-
optionalApi "org.assertj:assertj-core:$assertjVersion"
192+
optional "org.assertj:assertj-core:$assertjVersion"
175193
}
176194

177195
// enable all compiler warnings; individual projects may customize further
@@ -188,7 +206,6 @@ configure(javaProjects) { subproject ->
188206

189207
maxHeapSize = '1536m'
190208
useJUnitPlatform()
191-
192209
}
193210

194211
checkstyle {
@@ -205,7 +222,7 @@ configure(javaProjects) { subproject ->
205222
}
206223
}
207224

208-
task updateCopyrights {
225+
tasks.register('updateCopyrights') {
209226
onlyIf { !isCI }
210227
inputs.files(modifiedFiles.filter { f -> f.path.contains(subproject.name) })
211228
outputs.dir('build/classes')
@@ -278,29 +295,29 @@ project ('spring-kafka') {
278295
exclude group: 'org.springframework'
279296
}
280297
api "org.apache.kafka:kafka-clients:$kafkaVersion"
281-
optionalApi "org.apache.kafka:kafka-streams:$kafkaVersion"
282-
optionalApi "org.jetbrains.kotlinx:kotlinx-coroutines-reactor:$kotlinCoroutinesVersion"
283-
optionalApi 'com.fasterxml.jackson.core:jackson-core'
284-
optionalApi 'com.fasterxml.jackson.core:jackson-databind'
285-
optionalApi 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8'
286-
optionalApi 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
287-
optionalApi 'com.fasterxml.jackson.datatype:jackson-datatype-joda'
288-
optionalApi ('com.fasterxml.jackson.module:jackson-module-kotlin') {
298+
api 'io.micrometer:micrometer-observation'
299+
optional "org.apache.kafka:kafka-streams:$kafkaVersion"
300+
optional "org.jetbrains.kotlinx:kotlinx-coroutines-reactor:$kotlinCoroutinesVersion"
301+
optional 'com.fasterxml.jackson.core:jackson-core'
302+
optional 'com.fasterxml.jackson.core:jackson-databind'
303+
optional 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8'
304+
optional 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
305+
optional 'com.fasterxml.jackson.datatype:jackson-datatype-joda'
306+
optional ('com.fasterxml.jackson.module:jackson-module-kotlin') {
289307
exclude group: 'org.jetbrains.kotlin'
290308
}
291309

292310
// Spring Data projection message binding support
293-
optionalApi ("org.springframework.data:spring-data-commons") {
311+
optional ("org.springframework.data:spring-data-commons") {
294312
exclude group: 'org.springframework'
295313
exclude group: 'io.micrometer'
296314
}
297-
optionalApi "com.jayway.jsonpath:json-path:$jaywayJsonPathVersion"
315+
optional "com.jayway.jsonpath:json-path:$jaywayJsonPathVersion"
298316

299-
optionalApi 'io.projectreactor:reactor-core'
300-
optionalApi 'io.projectreactor.kafka:reactor-kafka'
301-
optionalApi 'io.micrometer:micrometer-core'
302-
api 'io.micrometer:micrometer-observation'
303-
optionalApi 'io.micrometer:micrometer-tracing'
317+
optional 'io.projectreactor:reactor-core'
318+
optional 'io.projectreactor.kafka:reactor-kafka'
319+
optional 'io.micrometer:micrometer-core'
320+
optional 'io.micrometer:micrometer-tracing'
304321

305322
testImplementation project (':spring-kafka-test')
306323
testImplementation 'io.projectreactor:reactor-test'
@@ -326,9 +343,7 @@ project('spring-kafka-bom') {
326343
dependencies {
327344
constraints {
328345
javaProjects.sort { "$it.name" }.each {
329-
if (it.name != 'spring-kafka-docs') {
330-
api it
331-
}
346+
api it
332347
}
333348
}
334349
}
@@ -369,12 +384,12 @@ project ('spring-kafka-test') {
369384
}
370385
api 'org.junit.jupiter:junit-jupiter-api'
371386
api 'org.junit.platform:junit-platform-launcher'
372-
optionalApi "org.hamcrest:hamcrest-core:$hamcrestVersion"
373-
optionalApi "org.mockito:mockito-core:$mockitoVersion"
374-
optionalApi ("junit:junit:$junit4Version") {
387+
optional "org.hamcrest:hamcrest-core:$hamcrestVersion"
388+
optional "org.mockito:mockito-core:$mockitoVersion"
389+
optional ("junit:junit:$junit4Version") {
375390
exclude group: 'org.hamcrest', module: 'hamcrest-core'
376391
}
377-
optionalApi "org.apache.logging.log4j:log4j-core:$log4jVersion"
392+
optional "org.apache.logging.log4j:log4j-core:$log4jVersion"
378393
}
379394
}
380395

@@ -406,30 +421,34 @@ tasks.register('filterMetricsDocsContent', Copy) {
406421
filter { line -> line.replaceAll('org.springframework.kafka.support.micrometer.', '').replaceAll('^Fully qualified n', 'N') }
407422
}
408423

409-
tasks.register('api', Javadoc) {
410-
group = 'Documentation'
411-
description = 'Generates aggregated Javadoc API documentation.'
424+
dependencies {
425+
javaProjects.each {
426+
javadoc it
427+
}
428+
}
429+
430+
javadoc {
412431
title = "${rootProject.description} ${version} API"
413432
options {
414433
encoding = 'UTF-8'
415-
memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED
434+
memberLevel = JavadocMemberLevel.PROTECTED
416435
author = true
417-
header = rootProject.description
436+
header = project.description
418437
use = true
419438
overview = 'src/api/overview.html'
420439
splitIndex = true
421440
links(project.ext.javadocLinks)
422441
addBooleanOption('Xdoclint:syntax', true) // only check syntax with doclint
423442
}
424443

425-
source javaProjects.collect { project ->
426-
project.sourceSets.main.allJava
427-
}
428-
429-
classpath = files(javaProjects.collect { project ->
430-
project.sourceSets.main.compileClasspath
431-
})
432444
destinationDir = file('build/api')
445+
classpath = files().from { files(javaProjects.collect { it.sourceSets.main.compileClasspath }) }
446+
}
447+
448+
tasks.register('api') {
449+
group = 'Documentation'
450+
description = 'Generates aggregated Javadoc API documentation.'
451+
dependsOn javadoc
433452
}
434453

435454
tasks.register('docsZip', Zip) {
@@ -442,7 +461,7 @@ tasks.register('docsZip', Zip) {
442461
include 'changelog.txt'
443462
}
444463

445-
from(api) {
464+
from(javadoc) {
446465
into 'api'
447466
}
448467
}

gradle/docs.gradle

+18-17
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,37 @@
1-
node {
2-
version = '16.16.0'
3-
}
4-
51
antora {
62
version = '3.2.0-alpha.2'
73
playbook = file('src/main/antora/antora-playbook.yml')
8-
options = ['to-dir' : project.layout.buildDirectory.dir('site').get().toString(), clean: true, fetch: !project.gradle.startParameter.offline, stacktrace: true]
4+
options = [
5+
'to-dir' : project.layout.buildDirectory.dir('site').get().toString(),
6+
clean : true,
7+
fetch : !project.gradle.startParameter.offline,
8+
stacktrace: true
9+
]
910
dependencies = [
10-
'@antora/atlas-extension': '1.0.0-alpha.1',
11-
'@antora/collector-extension': '1.0.0-alpha.3',
12-
'@asciidoctor/tabs': '1.0.0-beta.3',
13-
'@springio/antora-extensions': '1.4.2',
11+
'@antora/atlas-extension' : '1.0.0-alpha.1',
12+
'@antora/collector-extension' : '1.0.0-alpha.3',
13+
'@asciidoctor/tabs' : '1.0.0-beta.3',
14+
'@springio/antora-extensions' : '1.4.2',
1415
'@springio/asciidoctor-extensions': '1.0.0-alpha.8',
1516
]
1617
}
1718

18-
tasks.named("generateAntoraYml") {
19-
asciidocAttributes = project.provider( {
20-
return ['project-version' : project.version,
21-
'revnumber': project.version,
22-
'spring-version': project.version,
19+
tasks.named('generateAntoraYml') {
20+
asciidocAttributes = project.provider({
21+
return ['project-version': project.version,
22+
'revnumber' : project.version,
23+
'spring-version' : project.version,
2324
]
24-
} )
25+
})
2526
baseAntoraYmlFile = file('src/main/antora/antora.yml')
2627
}
2728

28-
tasks.create(name: 'createAntoraPartials', type: Sync) {
29+
tasks.register('createAntoraPartials', Sync) {
2930
from { project.rootProject.tasks.filterMetricsDocsContent.outputs }
3031
into layout.buildDirectory.dir('generated-antora-resources/modules/ROOT/partials')
3132
}
3233

33-
tasks.create('generateAntoraResources') {
34+
tasks.register('generateAntoraResources') {
3435
dependsOn 'createAntoraPartials'
3536
dependsOn 'generateAntoraYml'
3637
}

gradle/wrapper/gradle-wrapper.jar

42 Bytes
Binary file not shown.

gradle/wrapper/gradle-wrapper.properties

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionSha256Sum=9d926787066a081739e8200858338b4a69e837c3a821a33aca9db09dd4a41026
4-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
3+
distributionSha256Sum=d725d707bfabd4dfdc958c624003b3c80accc03f7037b5122c4b1d0ef15cecab
4+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
55
networkTimeout=10000
66
validateDistributionUrl=true
77
zipStoreBase=GRADLE_USER_HOME

gradlew

+5-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
# See the License for the specific language governing permissions and
1616
# limitations under the License.
1717
#
18+
# SPDX-License-Identifier: Apache-2.0
19+
#
1820

1921
##############################################################################
2022
#
@@ -55,7 +57,7 @@
5557
# Darwin, MinGW, and NonStop.
5658
#
5759
# (3) This script is generated from the Groovy template
58-
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
60+
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
5961
# within the Gradle project.
6062
#
6163
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -84,7 +86,8 @@ done
8486
# shellcheck disable=SC2034
8587
APP_BASE_NAME=${0##*/}
8688
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
87-
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
89+
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
90+
' "$PWD" ) || exit
8891

8992
# Use the maximum available, or set MAX_FD != -1 to use that value.
9093
MAX_FD=maximum

gradlew.bat

+12-10
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
@rem See the License for the specific language governing permissions and
1414
@rem limitations under the License.
1515
@rem
16+
@rem SPDX-License-Identifier: Apache-2.0
17+
@rem
1618

1719
@if "%DEBUG%"=="" @echo off
1820
@rem ##########################################################################
@@ -43,11 +45,11 @@ set JAVA_EXE=java.exe
4345
%JAVA_EXE% -version >NUL 2>&1
4446
if %ERRORLEVEL% equ 0 goto execute
4547

46-
echo.
47-
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
48-
echo.
49-
echo Please set the JAVA_HOME variable in your environment to match the
50-
echo location of your Java installation.
48+
echo. 1>&2
49+
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
50+
echo. 1>&2
51+
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
52+
echo location of your Java installation. 1>&2
5153

5254
goto fail
5355

@@ -57,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
5759

5860
if exist "%JAVA_EXE%" goto execute
5961

60-
echo.
61-
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
62-
echo.
63-
echo Please set the JAVA_HOME variable in your environment to match the
64-
echo location of your Java installation.
62+
echo. 1>&2
63+
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
64+
echo. 1>&2
65+
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
66+
echo location of your Java installation. 1>&2
6567

6668
goto fail
6769

0 commit comments

Comments
 (0)