diff --git a/gradle/asciidoc.gradle b/gradle/asciidoc.gradle index 7e76f88615..148497df49 100644 --- a/gradle/asciidoc.gradle +++ b/gradle/asciidoc.gradle @@ -34,7 +34,7 @@ configure(rootProject) { asciidoctor { dependsOn "generateObservabilityDocs" - inputs.dir("$buildDir/generatedMetricsDocs/") // force the task to consider changes in this folder, making it not UP-TO-DATE + inputs.dir(layout.buildDirectory.dir("generatedMetricsDocs/").get().asFile) // force the task to consider changes in this folder, making it not UP-TO-DATE sourceDir "docs/asciidoc/" sources { include "index.asciidoc" @@ -47,7 +47,7 @@ configure(rootProject) { } } - outputDir file("$buildDir/docs/asciidoc/html") + outputDir layout.buildDirectory.dir("docs/asciidoc/html").get().asFile logDocuments = true attributes stylesdir: "stylesheets/", stylesheet: 'reactor.css', @@ -65,7 +65,7 @@ configure(rootProject) { include "index.asciidoc" } baseDirFollowsSourceDir() - outputDir file("$buildDir/docs/asciidoc/pdf") + outputDir layout.buildDirectory.dir("docs/asciidoc/pdf").get().asFile logDocuments = true attributes 'source-highlighter': 'rouge' } @@ -103,38 +103,43 @@ configure(rootProject) { task generateMeterListenerDocs(type: JavaExec) { mainClass.set("io.micrometer.docs.DocsGeneratorCommand") classpath configurations.adoc - args project.rootDir.getAbsolutePath(), ".*MicrometerMeterListenerDocumentation.*.java", project.rootProject.buildDir.toPath().resolve("generatedMetricsDocs/meterListener").toAbsolutePath().toString() + args project.rootDir.getAbsolutePath(), + ".*MicrometerMeterListenerDocumentation.*.java", + project.rootProject.layout.buildDirectory.dir("generatedMetricsDocs/meterListener").get().asFile.absolutePath } task generateTimedSchedulerDocs(type: JavaExec) { mainClass.set("io.micrometer.docs.DocsGeneratorCommand") classpath configurations.adoc - args project.rootDir.getAbsolutePath(), ".*TimedSchedulerMeterDocumentation.*.java", project.rootProject.buildDir.toPath().resolve("generatedMetricsDocs/timedScheduler").toAbsolutePath().toString() + args project.rootDir.getAbsolutePath(), ".*TimedSchedulerMeterDocumentation.*.java", + project.rootProject.layout.buildDirectory.dir("generatedMetricsDocs/timedScheduler").get().asFile.absolutePath } task generateObservationDocs(type: JavaExec) { mainClass.set("io.micrometer.docs.DocsGeneratorCommand") classpath configurations.adoc - args project.rootDir.getAbsolutePath(), ".*MicrometerObservationListenerDocumentation.*.java", project.rootProject.buildDir.toPath().resolve("generatedMetricsDocs/observation").toAbsolutePath().toString() + args project.rootDir.getAbsolutePath(), + ".*MicrometerObservationListenerDocumentation.*.java", + project.rootProject.layout.buildDirectory.dir("generatedMetricsDocs/observation").get().asFile.absolutePath } task polishGeneratedMetricsDocs(type: Copy) { mustRunAfter "generateMeterListenerDocs" mustRunAfter "generateTimedSchedulerDocs" mustRunAfter "generateObservationDocs" - from(project.rootProject.buildDir.toString() + "/generatedMetricsDocs/meterListener/") { + from(project.rootProject.layout.buildDirectory.get().asFile.toString() + "/generatedMetricsDocs/meterListener/") { include "_*.adoc" rename '_(.*).adoc', 'meterListener_$1.adoc' } - from(project.rootProject.buildDir.toString() + "/generatedMetricsDocs/timedScheduler/") { + from(project.rootProject.layout.buildDirectory.get().asFile.toString() + "/generatedMetricsDocs/timedScheduler/") { include "_*.adoc" rename '_(.*).adoc', 'timedScheduler_$1.adoc' } - from(project.rootProject.buildDir.toString() + "/generatedMetricsDocs/observation/") { + from(project.rootProject.layout.buildDirectory.get().asFile.toString() + "/generatedMetricsDocs/observation/") { include "_*.adoc" rename '_(.*).adoc', 'observation_$1.adoc' } - into project.rootProject.buildDir.toString() + "/documentedMetrics" + into project.rootProject.layout.buildDirectory.get().asFile.toString() + "/documentedMetrics" filter { String line -> line.startsWith('[[observability-metrics]]') || line.startsWith('=== Observability - Metrics') || @@ -145,9 +150,9 @@ configure(rootProject) { filter { String line -> line.startsWith("====") ? line.replaceFirst("====", "=") : line } doLast { //since these are the files that get explicitly included in asciidoc, smoke test they exist - assert file(project.rootProject.buildDir.toString() + "/documentedMetrics/meterListener_metrics.adoc").exists() - assert file(project.rootProject.buildDir.toString() + "/documentedMetrics/timedScheduler_metrics.adoc").exists() - assert file(project.rootProject.buildDir.toString() + "/documentedMetrics/observation_metrics.adoc").exists() + assert file(project.rootProject.layout.buildDirectory.get().asFile.toString() + "/documentedMetrics/meterListener_metrics.adoc").exists() + assert file(project.rootProject.layout.buildDirectory.get().asFile.toString() + "/documentedMetrics/timedScheduler_metrics.adoc").exists() + assert file(project.rootProject.layout.buildDirectory.get().asFile.toString() + "/documentedMetrics/observation_metrics.adoc").exists() } } diff --git a/gradle/javadoc.gradle b/gradle/javadoc.gradle index b38ba27f77..cf2191c6d9 100644 --- a/gradle/javadoc.gradle +++ b/gradle/javadoc.gradle @@ -46,7 +46,7 @@ javadoc { classpath += sourceSets.main.compileClasspath maxMemory = "1024m" - destinationDir = new File(project.buildDir, "docs/javadoc") + destinationDir = project.layout.buildDirectory.dir("docs/javadoc").get().asFile if (JavaVersion.current().isJava8Compatible()) { options.addStringOption("Xdoclint:none", "-quiet") diff --git a/gradle/releaser.gradle b/gradle/releaser.gradle index c5c36f089c..23dcf9e485 100644 --- a/gradle/releaser.gradle +++ b/gradle/releaser.gradle @@ -51,7 +51,7 @@ task copyReadme(type: Copy, group: "releaser helpers", description: "copies the from(rootProject.rootDir) { include "README.md" } - into rootProject.buildDir + into rootProject.layout.buildDirectory.get().asFile.toString() } task bumpVersionsInReadme(type: Copy, group: "releaser helpers", description: "replaces versions in README") { @@ -66,7 +66,7 @@ task bumpVersionsInReadme(type: Copy, group: "releaser helpers", description: "r doLast { println "Will replace $oldVersion with $currentVersion and $oldSnapshot with $nextVersion" } - from(rootProject.buildDir) { + from(rootProject.layout.buildDirectory.get().asFile.toString()) { include 'README.md' } into rootProject.rootDir diff --git a/gradle/setup.gradle b/gradle/setup.gradle index e53af7c0e6..5b6f72584f 100644 --- a/gradle/setup.gradle +++ b/gradle/setup.gradle @@ -91,7 +91,7 @@ publishing { repositories { maven { name = "mock" - url = "${rootProject.buildDir}/repo" + url = "${rootProject.layout.buildDirectory.get().asFile.toString()}/repo" } if (qualifyVersion("$version") == "RELEASE") { maven { diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index c1962a79e2..7f93135c49 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 62f495dfed..3fa8f862f7 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index aeb74cbb43..0adc8e1a53 100755 --- a/gradlew +++ b/gradlew @@ -83,7 +83,8 @@ done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -130,10 +131,13 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. diff --git a/reactor-core/build.gradle b/reactor-core/build.gradle index ab859689e0..970280dfd9 100644 --- a/reactor-core/build.gradle +++ b/reactor-core/build.gradle @@ -201,7 +201,7 @@ def japicmpReport = tasks.register('japicmpReport') { japicmp.state.failure != null } doLast { - def reportFile = file("${project.buildDir}/reports/japi.txt") + def reportFile = project.layout.buildDirectory.file("reports/japi.txt").get().asFile if (reportFile.exists()) { println "\n **********************************" println " * /!\\ API compatibility failures *" @@ -246,7 +246,7 @@ task japicmp(type: JapicmpTask) { onlyModified = true failOnModification = true failOnSourceIncompatibility = true - txtOutputFile = file("${project.buildDir}/reports/japi.txt") + txtOutputFile = project.layout.buildDirectory.file("reports/japi.txt").get().asFile ignoreMissingClasses = true includeSynthetic = true compatibilityChangeExcludes = [ "METHOD_NEW_DEFAULT" ] @@ -265,7 +265,7 @@ task japicmp(type: JapicmpTask) { gradle.taskGraph.afterTask { task, state -> if (task instanceof JapicmpTask && state.failure && ((JapicmpTask) task).richReport == null) { //FIXME print the rich report somehow on console ? - print file("${project.buildDir}/reports/japi.txt").getText() + print project.layout.buildDirectory.file("reports/japi.txt").get().asFile.getText() } } @@ -280,7 +280,7 @@ javadoc { // work around https://github.com/gradle/gradle/issues/4046 copy { from('src/main/java') - into "$project.buildDir/docs/javadoc/" + into "${project.layout.buildDirectory.dir('/docs/javadoc/').get().asFile.toString()}" include "**/doc-files/**/*" } } diff --git a/reactor-test/build.gradle b/reactor-test/build.gradle index 262b02ca1a..1ee5698a9e 100644 --- a/reactor-test/build.gradle +++ b/reactor-test/build.gradle @@ -65,7 +65,7 @@ def japicmpReport = tasks.register('japicmpReport') { japicmp.state.failure != null } doLast { - def reportFile = file("${project.buildDir}/reports/japi.txt") + def reportFile = project.layout.buildDirectory.file("reports/japi.txt").get().asFile if (reportFile.exists()) { println "\n *********************************" println " * /!\\ API compatibility failures *" @@ -105,7 +105,7 @@ task japicmp(type: JapicmpTask) { onlyModified = true failOnModification = true failOnSourceIncompatibility = true - txtOutputFile = file("${project.buildDir}/reports/japi.txt") + txtOutputFile = project.layout.buildDirectory.file("reports/japi.txt").get().asFile ignoreMissingClasses = true includeSynthetic = true compatibilityChangeExcludes = [ "METHOD_NEW_DEFAULT" ] diff --git a/reactor-tools/build.gradle b/reactor-tools/build.gradle index 86b91843a1..ef603e05bc 100644 --- a/reactor-tools/build.gradle +++ b/reactor-tools/build.gradle @@ -192,7 +192,7 @@ project.tasks.buildPluginTest.mustRunAfter(shadowJar) project.tasks.buildPluginTest.dependsOn(shadowJar) task generateMockGradle(type: Copy) { - def coreJar = rootProject.findProject("reactor-core").buildDir.toString() + "/libs/reactor-core-" + version + ".jar" + def coreJar = rootProject.findProject("reactor-core").layout.buildDirectory.get().asFile.toString() + "/libs/reactor-core-" + version + ".jar" def agentJar = buildDir.toString() + "/libs/reactor-tools-" + version + "-original.jar" def mockGradleDir = buildDir.toString() + "/mock-gradle" @@ -208,7 +208,7 @@ task generateMockGradle(type: Copy) { } buildPluginTest { - def mockGradleDir = "$buildDir/mock-gradle" + def mockGradleDir = layout.buildDirectory.dir("mock-gradle").get().asFile.toString() println "will run mock gradle build from $mockGradleDir" systemProperty "mock-gradle-dir", mockGradleDir }