From 734040abe2fe8bff85e989228a503df99dced28c Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Mon, 16 Dec 2024 13:18:27 +0000 Subject: [PATCH 1/2] Update Gradle test scripts to avoid warnings with 8.12 Closes gh-43496 --- .../examples/getting-started/apply-plugin-snapshot.gradle | 4 +++- .../examples/getting-started/milestone-settings.gradle | 4 +++- .../examples/getting-started/snapshot-settings.gradle | 8 ++++++-- .../examples/getting-started/typical-plugins.gradle.kts | 5 +++-- .../examples/managing-dependencies/configure-bom.gradle | 4 +++- .../managing-dependencies/configure-platform.gradle | 4 +++- .../custom-version-with-platform.gradle | 4 +++- .../examples/managing-dependencies/custom-version.gradle | 4 +++- .../managing-dependencies/custom-version.gradle.kts | 3 ++- .../depend-on-plugin-milestone.gradle | 4 +++- .../depend-on-plugin-snapshot.gradle | 4 +++- .../examples/publishing/maven-publish.gradle | 2 +- .../plugin/ApplicationPluginActionIntegrationTests.gradle | 4 ++-- ...ependencyManagementPluginActionIntegrationTests.gradle | 7 +++++-- ...tionIntegrationTests-kotlinVersionPropertyIsSet.gradle | 7 +++++-- ...ests-noKotlinVersionPropertyWithoutKotlinPlugin.gradle | 3 ++- .../OnlyDependencyManagementIntegrationTests.gradle | 4 +++- ...otHaveDevelopmentOnlyDependenciesOnItsClasspath.gradle | 4 +++- ...processTestAotHasLibraryResourcesOnItsClasspath.gradle | 4 +++- ...estAndDevelopmentOnlyDependenciesOnItsClasspath.gradle | 4 +++- ...tHasTransitiveRuntimeDependenciesOnItsClasspath.gradle | 4 +++- .../bundling/BootJarIntegrationTests-customLayers.gradle | 4 +++- ...arIntegrationTests-explodedApplicationClasspath.gradle | 4 +++- .../BootJarIntegrationTests-implicitLayers.gradle | 4 +++- ...otJarIntegrationTests-layersWithCustomSourceSet.gradle | 4 +++- ...BootJarIntegrationTests-multiModuleCustomLayers.gradle | 4 +++- ...otJarIntegrationTests-multiModuleImplicitLayers.gradle | 4 +++- ...arIntegrationTests-packagedApplicationClasspath.gradle | 4 +++- .../tasks/bundling/BootJarIntegrationTests-signed.gradle | 4 +++- .../bundling/BootWarIntegrationTests-customLayers.gradle | 4 +++- .../BootWarIntegrationTests-implicitLayers.gradle | 4 +++- ...otWarIntegrationTests-layersWithCustomSourceSet.gradle | 4 +++- ...BootWarIntegrationTests-multiModuleCustomLayers.gradle | 4 +++- ...otWarIntegrationTests-multiModuleImplicitLayers.gradle | 4 +++- 34 files changed, 104 insertions(+), 39 deletions(-) diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/apply-plugin-snapshot.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/apply-plugin-snapshot.gradle index 345752a5023..75fde0b4337 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/apply-plugin-snapshot.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/apply-plugin-snapshot.gradle @@ -1,6 +1,8 @@ buildscript { repositories { - maven { url 'https://repo.spring.io/libs-snapshot' } + maven { + url = 'https://repo.spring.io/libs-snapshot' + } } dependencies { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/milestone-settings.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/milestone-settings.gradle index a60b9e8c38a..37e3abf5835 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/milestone-settings.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/milestone-settings.gradle @@ -1,6 +1,8 @@ pluginManagement { repositories { - maven { url 'https://repo.spring.io/milestone' } + maven { + url = 'https://repo.spring.io/milestone' + } gradlePluginPortal() } } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/snapshot-settings.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/snapshot-settings.gradle index a136406ac3a..ed12e5ee8d4 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/snapshot-settings.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/snapshot-settings.gradle @@ -1,7 +1,11 @@ pluginManagement { repositories { - maven { url 'https://repo.spring.io/milestone' } - maven { url 'https://repo.spring.io/snapshot' } + maven { + url = 'https://repo.spring.io/milestone' + } + maven { + url = 'https://repo.spring.io/snapshot' + } gradlePluginPortal() } } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/typical-plugins.gradle.kts b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/typical-plugins.gradle.kts index 199164e4f39..ba6ccb57ddf 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/typical-plugins.gradle.kts +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/typical-plugins.gradle.kts @@ -8,8 +8,9 @@ apply(plugin = "io.spring.dependency-management") // end::apply[] tasks.register("verify") { + val plugins = project.plugins doLast { - project.plugins.getPlugin(JavaPlugin::class) - project.plugins.getPlugin(io.spring.gradle.dependencymanagement.DependencyManagementPlugin::class) + plugins.getPlugin(JavaPlugin::class) + plugins.getPlugin(io.spring.gradle.dependencymanagement.DependencyManagementPlugin::class) } } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/configure-bom.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/configure-bom.gradle index bb6549b367a..6b2381bea06 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/configure-bom.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/configure-bom.gradle @@ -24,5 +24,7 @@ dependencyManagement { } repositories { - maven { url 'repository' } + maven { + url = 'repository' + } } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/configure-platform.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/configure-platform.gradle index 00da8c30645..4cd9f5949e1 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/configure-platform.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/configure-platform.gradle @@ -14,7 +14,9 @@ dependencies { } repositories { - maven { url 'repository' } + maven { + url = 'repository' + } } configurations.all { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version-with-platform.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version-with-platform.gradle index 5cb4d2f742d..54ef2bca836 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version-with-platform.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version-with-platform.gradle @@ -9,7 +9,9 @@ dependencies { } repositories { - maven { url 'repository' } + maven { + url = 'repository' + } } configurations.all { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version.gradle index 017b04e2028..b10771589f7 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version.gradle @@ -19,7 +19,9 @@ ext['slf4j.version'] = '1.7.20' // end::custom-version[] repositories { - maven { url 'repository' } + maven { + url = 'repository' + } } task slf4jVersion { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version.gradle.kts b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version.gradle.kts index a589529ef83..56f12e9605d 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version.gradle.kts +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version.gradle.kts @@ -27,7 +27,8 @@ the().apply { } tasks.register("slf4jVersion") { + val dependencyManagement = project.the() doLast { - println(project.the().managedVersions["org.slf4j:slf4j-api"]) + println(dependencyManagement.managedVersions["org.slf4j:slf4j-api"]) } } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-milestone.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-milestone.gradle index cfafad11759..6564b0feeca 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-milestone.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-milestone.gradle @@ -1,6 +1,8 @@ buildscript { repositories { - maven { url 'https://repo.spring.io/libs-milestone' } + maven { + url = 'https://repo.spring.io/libs-milestone' + } } dependencies { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-snapshot.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-snapshot.gradle index 94b846d23da..4ecc87dc5bc 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-snapshot.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-snapshot.gradle @@ -1,6 +1,8 @@ buildscript { repositories { - maven { url 'https://repo.spring.io/libs-snapshot' } + maven { + url = 'https://repo.spring.io/libs-snapshot' + } } dependencies { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/publishing/maven-publish.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/publishing/maven-publish.gradle index fa4ad521a4e..9ec0de03839 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/publishing/maven-publish.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/publishing/maven-publish.gradle @@ -13,7 +13,7 @@ publishing { } repositories { maven { - url 'https://repo.example.com' + url = 'https://repo.example.com' } } } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/ApplicationPluginActionIntegrationTests.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/ApplicationPluginActionIntegrationTests.gradle index 0bace9b66c5..3738a44e7ce 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/ApplicationPluginActionIntegrationTests.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/ApplicationPluginActionIntegrationTests.gradle @@ -16,9 +16,9 @@ task('taskExists') { } task('distributionExists') { + def distributions = project.extensions.findByType(DistributionContainer) doFirst { - boolean found = project.hasProperty('distributions') && - distributions.findByName(distributionName) != null + boolean found = distributions != null && distributions.findByName(distributionName) != null println "${distributionName} exists = ${found}" } } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/DependencyManagementPluginActionIntegrationTests.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/DependencyManagementPluginActionIntegrationTests.gradle index b0b07793224..cb102938eed 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/DependencyManagementPluginActionIntegrationTests.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/DependencyManagementPluginActionIntegrationTests.gradle @@ -17,12 +17,15 @@ if (project.hasProperty('applyDependencyManagementPlugin')) { } repositories { - maven { url 'repository' } + maven { + url = 'repository' + } } task doesNotHaveDependencyManagement { + def extensions = project.extensions doLast { - if (project.extensions.findByName('dependencyManagement') != null) { + if (extensions.findByName('dependencyManagement') != null) { throw new GradleException('Found dependency management extension') } } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/KotlinPluginActionIntegrationTests-kotlinVersionPropertyIsSet.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/KotlinPluginActionIntegrationTests-kotlinVersionPropertyIsSet.gradle index ea36917c8ae..e2640d10448 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/KotlinPluginActionIntegrationTests-kotlinVersionPropertyIsSet.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/KotlinPluginActionIntegrationTests-kotlinVersionPropertyIsSet.gradle @@ -17,7 +17,9 @@ dependencyManagement { repositories { mavenCentral() - maven { url 'repository' } + maven { + url = 'repository' + } } dependencies { @@ -25,8 +27,9 @@ dependencies { } task kotlinVersion { + def properties = project.properties doLast { - def kotlinVersion = project.hasProperty('kotlin.version') ? project.getProperty('kotlin.version') : 'none' + def kotlinVersion = properties.getOrDefault('kotlin.version', 'none') println "Kotlin version: ${kotlinVersion}" } } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/KotlinPluginActionIntegrationTests-noKotlinVersionPropertyWithoutKotlinPlugin.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/KotlinPluginActionIntegrationTests-noKotlinVersionPropertyWithoutKotlinPlugin.gradle index b32c7306daf..5e570ebaf3c 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/KotlinPluginActionIntegrationTests-noKotlinVersionPropertyWithoutKotlinPlugin.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/KotlinPluginActionIntegrationTests-noKotlinVersionPropertyWithoutKotlinPlugin.gradle @@ -3,8 +3,9 @@ plugins { } task kotlinVersion { + def properties = project.properties doLast { - def kotlinVersion = project.hasProperty('kotlin.version') ? project.getProperty('kotlin.version') : 'none' + def kotlinVersion = properties.getOrDefault('kotlin.version', 'none') println "Kotlin version: ${kotlinVersion}" } } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/OnlyDependencyManagementIntegrationTests.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/OnlyDependencyManagementIntegrationTests.gradle index 153cd369f53..faa25dde35f 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/OnlyDependencyManagementIntegrationTests.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/OnlyDependencyManagementIntegrationTests.gradle @@ -6,7 +6,9 @@ plugins { apply plugin: 'io.spring.dependency-management' repositories { - maven { url 'repository' } + maven { + url = 'repository' + } } dependencyManagement { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processTestAotDoesNotHaveDevelopmentOnlyDependenciesOnItsClasspath.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processTestAotDoesNotHaveDevelopmentOnlyDependenciesOnItsClasspath.gradle index f9cf4c70eb4..300452be78d 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processTestAotDoesNotHaveDevelopmentOnlyDependenciesOnItsClasspath.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processTestAotDoesNotHaveDevelopmentOnlyDependenciesOnItsClasspath.gradle @@ -7,7 +7,9 @@ apply plugin: 'org.springframework.boot.aot' repositories { mavenCentral() - maven { url 'repository' } + maven { + url = 'repository' + } } configurations.all { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processTestAotHasLibraryResourcesOnItsClasspath.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processTestAotHasLibraryResourcesOnItsClasspath.gradle index 95f4e824aef..9712aca891c 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processTestAotHasLibraryResourcesOnItsClasspath.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processTestAotHasLibraryResourcesOnItsClasspath.gradle @@ -6,7 +6,9 @@ plugins { repositories { mavenCentral() - maven { url 'repository' } + maven { + url = 'repository' + } } configurations.all { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processTestAotHasTestAndDevelopmentOnlyDependenciesOnItsClasspath.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processTestAotHasTestAndDevelopmentOnlyDependenciesOnItsClasspath.gradle index abfe85dbb54..3c5ebfa1f47 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processTestAotHasTestAndDevelopmentOnlyDependenciesOnItsClasspath.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processTestAotHasTestAndDevelopmentOnlyDependenciesOnItsClasspath.gradle @@ -7,7 +7,9 @@ apply plugin: 'org.springframework.boot.aot' repositories { mavenCentral() - maven { url 'repository' } + maven { + url = 'repository' + } } configurations.all { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processTestAotHasTransitiveRuntimeDependenciesOnItsClasspath.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processTestAotHasTransitiveRuntimeDependenciesOnItsClasspath.gradle index e704c3fdcba..8a0f7c5c506 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processTestAotHasTransitiveRuntimeDependenciesOnItsClasspath.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processTestAotHasTransitiveRuntimeDependenciesOnItsClasspath.gradle @@ -6,7 +6,9 @@ plugins { repositories { mavenCentral() - maven { url 'repository' } + maven { + url = 'repository' + } } configurations.all { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-customLayers.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-customLayers.gradle index 0c5a9175aaa..5da5bc5271c 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-customLayers.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-customLayers.gradle @@ -27,7 +27,9 @@ bootJar { repositories { mavenCentral() - maven { url 'repository' } + maven { + url = 'repository' + } } dependencies { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-explodedApplicationClasspath.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-explodedApplicationClasspath.gradle index 757a45e38a6..76387f1f5eb 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-explodedApplicationClasspath.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-explodedApplicationClasspath.gradle @@ -5,7 +5,9 @@ plugins { repositories { mavenCentral() - maven { url 'repository' } + maven { + url = 'repository' + } } dependencies { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-implicitLayers.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-implicitLayers.gradle index d3f7649e75f..25aefbd1d2e 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-implicitLayers.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-implicitLayers.gradle @@ -9,7 +9,9 @@ bootJar { repositories { mavenCentral() - maven { url 'repository' } + maven { + url = 'repository' + } } dependencies { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-layersWithCustomSourceSet.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-layersWithCustomSourceSet.gradle index d7005e366e5..543d0419c47 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-layersWithCustomSourceSet.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-layersWithCustomSourceSet.gradle @@ -13,7 +13,9 @@ bootJar { repositories { mavenCentral() - maven { url 'repository' } + maven { + url = 'repository' + } } dependencies { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-multiModuleCustomLayers.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-multiModuleCustomLayers.gradle index df0629d86ed..31c22a34fbb 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-multiModuleCustomLayers.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-multiModuleCustomLayers.gradle @@ -42,7 +42,9 @@ bootJar { repositories { mavenCentral() - maven { url 'repository' } + maven { + url = 'repository' + } } dependencies { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-multiModuleImplicitLayers.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-multiModuleImplicitLayers.gradle index fe34ea1e3e3..31cd173b5df 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-multiModuleImplicitLayers.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-multiModuleImplicitLayers.gradle @@ -20,7 +20,9 @@ bootJar { repositories { mavenCentral() - maven { url 'repository' } + maven { + url = 'repository' + } } dependencies { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-packagedApplicationClasspath.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-packagedApplicationClasspath.gradle index ef58fb67231..18737a8e143 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-packagedApplicationClasspath.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-packagedApplicationClasspath.gradle @@ -10,7 +10,9 @@ task launch(type: JavaExec) { repositories { mavenCentral() - maven { url 'repository' } + maven { + url = 'repository' + } } dependencies { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-signed.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-signed.gradle index eacb285bd79..25a77aaf9d5 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-signed.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-signed.gradle @@ -9,7 +9,9 @@ bootJar { repositories { mavenCentral() - maven { url 'repository' } + maven { + url = 'repository' + } } dependencies { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-customLayers.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-customLayers.gradle index 0a8dfed2c08..bfa5a627dfc 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-customLayers.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-customLayers.gradle @@ -28,7 +28,9 @@ bootWar { repositories { mavenCentral() - maven { url 'repository' } + maven { + url = 'repository' + } } dependencies { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-implicitLayers.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-implicitLayers.gradle index 37669030756..47ad281cbe8 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-implicitLayers.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-implicitLayers.gradle @@ -10,7 +10,9 @@ bootWar { repositories { mavenCentral() - maven { url 'repository' } + maven { + url = 'repository' + } } dependencies { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-layersWithCustomSourceSet.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-layersWithCustomSourceSet.gradle index eddc6edebe4..f90c31a75cc 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-layersWithCustomSourceSet.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-layersWithCustomSourceSet.gradle @@ -14,7 +14,9 @@ bootWar { repositories { mavenCentral() - maven { url 'repository' } + maven { + url = 'repository' + } } dependencies { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-multiModuleCustomLayers.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-multiModuleCustomLayers.gradle index 97cec4b47e6..d96cc1e3da4 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-multiModuleCustomLayers.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-multiModuleCustomLayers.gradle @@ -43,7 +43,9 @@ bootWar { repositories { mavenCentral() - maven { url 'repository' } + maven { + url = 'repository' + } } dependencies { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-multiModuleImplicitLayers.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-multiModuleImplicitLayers.gradle index bdb281dd9a4..67c21daefb2 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-multiModuleImplicitLayers.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-multiModuleImplicitLayers.gradle @@ -21,7 +21,9 @@ bootWar { repositories { mavenCentral() - maven { url 'repository' } + maven { + url = 'repository' + } } dependencies { From d8a9ebd14bd4de964b558515411c6f090a307384 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Thu, 2 Jan 2025 11:12:09 +0000 Subject: [PATCH 2/2] Upgrade to Gradle 8.12 Closes gh-43649 --- build.gradle | 10 +- .../boot/build/AntoraConventions.java | 41 ++-- .../boot/build/JavaConventions.java | 22 ++- .../AutoConfigurationPlugin.java | 4 +- .../boot/build/bom/BomExtension.java | 65 ++++--- .../boot/build/bom/BomPlugin.java | 9 +- .../build/mavenplugin/MavenPluginPlugin.java | 181 ++++++++++-------- .../boot/build/starters/StarterPlugin.java | 38 ++-- .../build/test/IntegrationTestPlugin.java | 21 +- .../boot/build/test/SystemTestPlugin.java | 26 +-- .../antora/GenerateAntoraPlaybookTests.java | 9 +- .../architecture/ArchitectureCheckTests.java | 18 +- gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 3 +- .../spring-boot-antlib/build.gradle | 2 +- .../spring-boot-cli/build.gradle | 4 +- .../tasks/buildinfo/BuildInfoTests.java | 4 +- .../bundling/AbstractBootArchiveTests.java | 4 +- .../tasks/bundling/BootBuildImageTests.java | 4 +- .../spring-boot-smoke-test-ant/build.gradle | 4 +- 20 files changed, 249 insertions(+), 222 deletions(-) diff --git a/build.gradle b/build.gradle index 5838bd2f1bd..e97c23f57d5 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ description = "Spring Boot Build" defaultTasks 'build' allprojects { - group "org.springframework.boot" + group = "org.springframework.boot" } subprojects { @@ -18,10 +18,14 @@ subprojects { mavenCentral() spring.mavenRepositories() if (version.contains('-')) { - maven { url "https://repo.spring.io/milestone" } + maven { + url = "https://repo.spring.io/milestone" + } } if (version.endsWith('-SNAPSHOT')) { - maven { url "https://repo.spring.io/snapshot" } + maven { + url = "https://repo.spring.io/snapshot" + } } } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/AntoraConventions.java b/buildSrc/src/main/java/org/springframework/boot/build/AntoraConventions.java index da5da165338..2ec3dcfb253 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/AntoraConventions.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/AntoraConventions.java @@ -1,5 +1,5 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -41,6 +41,7 @@ import org.gradle.api.plugins.JavaBasePlugin; import org.gradle.api.provider.Provider; import org.gradle.api.tasks.Copy; import org.gradle.api.tasks.TaskContainer; +import org.gradle.api.tasks.TaskProvider; import org.springframework.boot.build.antora.AntoraAsciidocAttributes; import org.springframework.boot.build.antora.GenerateAntoraPlaybook; @@ -75,16 +76,16 @@ public class AntoraConventions { } private void apply(Project project, AntoraPlugin antoraPlugin) { - ExtractVersionConstraints dependencyVersionsTask = addDependencyVersionsTask(project); + TaskProvider dependencyVersionsTask = addDependencyVersionsTask(project); project.getPlugins().apply(GenerateAntoraYmlPlugin.class); TaskContainer tasks = project.getTasks(); - GenerateAntoraPlaybook generateAntoraPlaybookTask = tasks.create(GENERATE_ANTORA_PLAYBOOK_TASK_NAME, - GenerateAntoraPlaybook.class); - configureGenerateAntoraPlaybookTask(project, generateAntoraPlaybookTask); - Copy copyAntoraPackageJsonTask = tasks.create("copyAntoraPackageJson", Copy.class); - configureCopyAntoraPackageJsonTask(project, copyAntoraPackageJsonTask); - NpmInstallTask npmInstallTask = tasks.create("antoraNpmInstall", NpmInstallTask.class); - configureNpmInstallTask(project, npmInstallTask, copyAntoraPackageJsonTask); + TaskProvider generateAntoraPlaybookTask = tasks.register( + GENERATE_ANTORA_PLAYBOOK_TASK_NAME, GenerateAntoraPlaybook.class, + (task) -> configureGenerateAntoraPlaybookTask(project, task)); + TaskProvider copyAntoraPackageJsonTask = tasks.register("copyAntoraPackageJson", Copy.class, + (task) -> configureCopyAntoraPackageJsonTask(project, task)); + TaskProvider npmInstallTask = tasks.register("antoraNpmInstall", NpmInstallTask.class, + (task) -> configureNpmInstallTask(project, task, copyAntoraPackageJsonTask)); tasks.withType(GenerateAntoraYmlTask.class, (generateAntoraYmlTask) -> configureGenerateAntoraYmlTask(project, generateAntoraYmlTask, dependencyVersionsTask)); tasks.withType(AntoraTask.class, @@ -106,7 +107,8 @@ public class AntoraConventions { .into(getNodeProjectDir(project)); } - private void configureNpmInstallTask(Project project, NpmInstallTask npmInstallTask, Copy copyAntoraPackageJson) { + private void configureNpmInstallTask(Project project, NpmInstallTask npmInstallTask, + TaskProvider copyAntoraPackageJson) { npmInstallTask.dependsOn(copyAntoraPackageJson); Map environment = new HashMap<>(); environment.put("npm_config_omit", "optional"); @@ -115,14 +117,14 @@ public class AntoraConventions { npmInstallTask.getNpmCommand().set(List.of("ci", "--silent", "--no-progress")); } - private ExtractVersionConstraints addDependencyVersionsTask(Project project) { + private TaskProvider addDependencyVersionsTask(Project project) { return project.getTasks() - .create("dependencyVersions", ExtractVersionConstraints.class, + .register("dependencyVersions", ExtractVersionConstraints.class, (task) -> task.enforcedPlatform(DEPENDENCIES_PATH)); } private void configureGenerateAntoraYmlTask(Project project, GenerateAntoraYmlTask generateAntoraYmlTask, - ExtractVersionConstraints dependencyVersionsTask) { + TaskProvider dependencyVersionsTask) { generateAntoraYmlTask.getOutputs().doNotCacheIf("getAsciidocAttributes() changes output", (task) -> true); generateAntoraYmlTask.dependsOn(dependencyVersionsTask); generateAntoraYmlTask.setProperty("componentName", "boot"); @@ -149,17 +151,16 @@ public class AntoraConventions { } private Provider> getAsciidocAttributes(Project project, - ExtractVersionConstraints dependencyVersionsTask) { - return project.provider(() -> { + TaskProvider dependencyVersionsTask) { + return dependencyVersionsTask.map((task) -> task.getVersionConstraints()).map((constraints) -> { BomExtension bom = (BomExtension) project.project(DEPENDENCIES_PATH).getExtensions().getByName("bom"); - Map dependencyVersions = dependencyVersionsTask.getVersionConstraints(); - AntoraAsciidocAttributes attributes = new AntoraAsciidocAttributes(project, bom, dependencyVersions); - return attributes.get(); + return new AntoraAsciidocAttributes(project, bom, constraints).get(); }); } - private void configureAntoraTask(Project project, AntoraTask antoraTask, NpmInstallTask npmInstallTask, - GenerateAntoraPlaybook generateAntoraPlaybookTask) { + private void configureAntoraTask(Project project, AntoraTask antoraTask, + TaskProvider npmInstallTask, + TaskProvider generateAntoraPlaybookTask) { antoraTask.setGroup("Documentation"); antoraTask.dependsOn(npmInstallTask, generateAntoraPlaybookTask); antoraTask.setPlaybook("antora-playbook.yml"); diff --git a/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java b/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java index e5ce6df4244..557d2628a60 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -44,6 +44,7 @@ import org.gradle.api.plugins.quality.CheckstyleExtension; import org.gradle.api.plugins.quality.CheckstylePlugin; import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.SourceSetContainer; +import org.gradle.api.tasks.TaskProvider; import org.gradle.api.tasks.bundling.Jar; import org.gradle.api.tasks.compile.JavaCompile; import org.gradle.api.tasks.javadoc.Javadoc; @@ -126,11 +127,12 @@ class JavaConventions { } private void configureJarManifestConventions(Project project) { - ExtractResources extractLegalResources = project.getTasks() - .create("extractLegalResources", ExtractResources.class); - extractLegalResources.getDestinationDirectory().set(project.getLayout().getBuildDirectory().dir("legal")); - extractLegalResources.getResourceNames().set(Arrays.asList("LICENSE.txt", "NOTICE.txt")); - extractLegalResources.getProperties().put("version", project.getVersion().toString()); + TaskProvider extractLegalResources = project.getTasks() + .register("extractLegalResources", ExtractResources.class, (task) -> { + task.getDestinationDirectory().set(project.getLayout().getBuildDirectory().dir("legal")); + task.getResourceNames().set(Arrays.asList("LICENSE.txt", "NOTICE.txt")); + task.getProperties().put("version", project.getVersion().toString()); + }); SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class); Set sourceJarTaskNames = sourceSets.stream() .map(SourceSet::getSourcesJarTaskName) @@ -295,10 +297,10 @@ class JavaConventions { } private void createProhibitedDependenciesCheck(Configuration classpath, Project project) { - CheckClasspathForProhibitedDependencies checkClasspathForProhibitedDependencies = project.getTasks() - .create("check" + StringUtils.capitalize(classpath.getName() + "ForProhibitedDependencies"), - CheckClasspathForProhibitedDependencies.class); - checkClasspathForProhibitedDependencies.setClasspath(classpath); + TaskProvider checkClasspathForProhibitedDependencies = project + .getTasks() + .register("check" + StringUtils.capitalize(classpath.getName() + "ForProhibitedDependencies"), + CheckClasspathForProhibitedDependencies.class, (task) -> task.setClasspath(classpath)); project.getTasks().getByName(JavaBasePlugin.CHECK_TASK_NAME).dependsOn(checkClasspathForProhibitedDependencies); } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationPlugin.java index 496115cffda..86a552466b8 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationPlugin.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -86,7 +86,7 @@ public class AutoConfigurationPlugin implements Plugin { .add(project.getDependencies() .project(Collections.singletonMap("path", ":spring-boot-project:spring-boot-tools:spring-boot-configuration-processor"))); - project.getTasks().create("autoConfigurationMetadata", AutoConfigurationMetadata.class, (task) -> { + project.getTasks().register("autoConfigurationMetadata", AutoConfigurationMetadata.class, (task) -> { SourceSet main = project.getExtensions() .getByType(JavaPluginExtension.class) .getSourceSets() diff --git a/buildSrc/src/main/java/org/springframework/boot/build/bom/BomExtension.java b/buildSrc/src/main/java/org/springframework/boot/build/bom/BomExtension.java index 6fed36d9bf8..ad56244ae0f 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/bom/BomExtension.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/bom/BomExtension.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -54,6 +54,7 @@ import org.gradle.api.plugins.JavaPlatformPlugin; import org.gradle.api.publish.maven.tasks.GenerateMavenPom; import org.gradle.api.tasks.Sync; import org.gradle.api.tasks.TaskExecutionException; +import org.gradle.api.tasks.TaskProvider; import org.w3c.dom.Document; import org.w3c.dom.NodeList; @@ -134,52 +135,56 @@ public class BomExtension { this.project.getTasks() .matching((task) -> task.getName().equals(DeployedPlugin.GENERATE_POM_TASK_NAME)) .all((task) -> { - Sync syncBom = this.project.getTasks().create("syncBom", Sync.class); - syncBom.dependsOn(task); File generatedBomDir = this.project.getLayout() .getBuildDirectory() .dir("generated/bom") .get() .getAsFile(); - syncBom.setDestinationDir(generatedBomDir); - syncBom.from(((GenerateMavenPom) task).getDestination(), (pom) -> pom.rename((name) -> "pom.xml")); - try { - String settingsXmlContent = FileCopyUtils - .copyToString(new InputStreamReader( - getClass().getClassLoader().getResourceAsStream("effective-bom-settings.xml"), - StandardCharsets.UTF_8)) - .replace("localRepositoryPath", - this.project.getLayout() - .getBuildDirectory() - .dir("local-m2-repository") - .get() - .getAsFile() - .getAbsolutePath()); - syncBom.from(this.project.getResources().getText().fromString(settingsXmlContent), + TaskProvider syncBom = this.project.getTasks().register("syncBom", Sync.class, (sync) -> { + sync.dependsOn(task); + sync.setDestinationDir(generatedBomDir); + sync.from(((GenerateMavenPom) task).getDestination(), (pom) -> pom.rename((name) -> "pom.xml")); + sync.from(this.project.getResources().getText().fromString(loadSettingsXml()), (settingsXml) -> settingsXml.rename((name) -> "settings.xml")); - } - catch (IOException ex) { - throw new GradleException("Failed to prepare settings.xml", ex); - } - MavenExec generateEffectiveBom = this.project.getTasks() - .create("generateEffectiveBom", MavenExec.class); - generateEffectiveBom.getProjectDir().set(generatedBomDir); + }); File effectiveBom = this.project.getLayout() .getBuildDirectory() .file("generated/effective-bom/" + this.project.getName() + "-effective-bom.xml") .get() .getAsFile(); - generateEffectiveBom.args("--settings", "settings.xml", "help:effective-pom", - "-Doutput=" + effectiveBom); - generateEffectiveBom.dependsOn(syncBom); - generateEffectiveBom.getOutputs().file(effectiveBom); - generateEffectiveBom.doLast(new StripUnrepeatableOutputAction(effectiveBom)); + TaskProvider generateEffectiveBom = this.project.getTasks() + .register("generateEffectiveBom", MavenExec.class, (maven) -> { + maven.getProjectDir().set(generatedBomDir); + maven.args("--settings", "settings.xml", "help:effective-pom", "-Doutput=" + effectiveBom); + maven.dependsOn(syncBom); + maven.getOutputs().file(effectiveBom); + maven.doLast(new StripUnrepeatableOutputAction(effectiveBom)); + }); this.project.getArtifacts() .add(effectiveBomConfiguration.getName(), effectiveBom, (artifact) -> artifact.builtBy(generateEffectiveBom)); }); } + private String loadSettingsXml() { + try { + return FileCopyUtils + .copyToString(new InputStreamReader( + getClass().getClassLoader().getResourceAsStream("effective-bom-settings.xml"), + StandardCharsets.UTF_8)) + .replace("localRepositoryPath", + this.project.getLayout() + .getBuildDirectory() + .dir("local-m2-repository") + .get() + .getAsFile() + .getAbsolutePath()); + } + catch (IOException ex) { + throw new GradleException("Failed to prepare settings.xml", ex); + } + } + private String createDependencyNotation(String groupId, String artifactId, DependencyVersion version) { return groupId + ":" + artifactId + ":" + version; } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/bom/BomPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/bom/BomPlugin.java index 86ec205bf23..1d5a69f4df1 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/bom/BomPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/bom/BomPlugin.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,6 +32,7 @@ import org.gradle.api.plugins.PluginContainer; import org.gradle.api.publish.PublishingExtension; import org.gradle.api.publish.maven.MavenPom; import org.gradle.api.publish.maven.MavenPublication; +import org.gradle.api.tasks.TaskProvider; import org.springframework.boot.build.DeployedPlugin; import org.springframework.boot.build.MavenRepositoryPlugin; @@ -61,10 +62,10 @@ public class BomPlugin implements Plugin { javaPlatform.allowDependencies(); createApiEnforcedConfiguration(project); BomExtension bom = project.getExtensions().create("bom", BomExtension.class, project); - CheckBom checkBom = project.getTasks().create("bomrCheck", CheckBom.class, bom); + TaskProvider checkBom = project.getTasks().register("bomrCheck", CheckBom.class, bom); project.getTasks().named("check").configure((check) -> check.dependsOn(checkBom)); - project.getTasks().create("bomrUpgrade", UpgradeBom.class, bom); - project.getTasks().create("moveToSnapshots", MoveToSnapshots.class, bom); + project.getTasks().register("bomrUpgrade", UpgradeBom.class, bom); + project.getTasks().register("moveToSnapshots", MoveToSnapshots.class, bom); project.getTasks().register("checkLinks", CheckLinks.class, bom); new PublishingCustomizer(project, bom).customize(); } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/mavenplugin/MavenPluginPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/mavenplugin/MavenPluginPlugin.java index 280979a384f..ce576a1057d 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/mavenplugin/MavenPluginPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/mavenplugin/MavenPluginPlugin.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -45,7 +45,6 @@ import org.gradle.api.DefaultTask; import org.gradle.api.GradleException; import org.gradle.api.Plugin; import org.gradle.api.Project; -import org.gradle.api.Task; import org.gradle.api.artifacts.ComponentMetadataContext; import org.gradle.api.artifacts.ComponentMetadataRule; import org.gradle.api.artifacts.Configuration; @@ -62,6 +61,8 @@ import org.gradle.api.file.CopySpec; import org.gradle.api.file.Directory; import org.gradle.api.file.DirectoryProperty; import org.gradle.api.file.FileCollection; +import org.gradle.api.file.ProjectLayout; +import org.gradle.api.file.RegularFile; import org.gradle.api.file.RegularFileProperty; import org.gradle.api.model.ObjectFactory; import org.gradle.api.plugins.JavaLibraryPlugin; @@ -74,7 +75,6 @@ import org.gradle.api.publish.maven.plugins.MavenPublishPlugin; import org.gradle.api.publish.tasks.GenerateModuleMetadata; import org.gradle.api.tasks.Classpath; import org.gradle.api.tasks.InputFiles; -import org.gradle.api.tasks.JavaExec; import org.gradle.api.tasks.OutputDirectory; import org.gradle.api.tasks.OutputFile; import org.gradle.api.tasks.PathSensitive; @@ -120,8 +120,8 @@ public class MavenPluginPlugin implements Plugin { Jar jarTask = (Jar) project.getTasks().getByName(JavaPlugin.JAR_TASK_NAME); configurePomPackaging(project); addPopulateIntTestMavenRepositoryTask(project); - MavenExec generateHelpMojoTask = addGenerateHelpMojoTask(project, jarTask); - MavenExec generatePluginDescriptorTask = addGeneratePluginDescriptorTask(project, jarTask, + TaskProvider generateHelpMojoTask = addGenerateHelpMojoTask(project, jarTask); + TaskProvider generatePluginDescriptorTask = addGeneratePluginDescriptorTask(project, jarTask, generateHelpMojoTask); addDocumentPluginGoalsTask(project, generatePluginDescriptorTask); addPrepareMavenBinariesTask(project); @@ -170,25 +170,30 @@ public class MavenPluginPlugin implements Plugin { .extendsFrom(project.getConfigurations().getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME)); runtimeClasspathWithMetadata.attributes((attributes) -> attributes.attribute(DocsType.DOCS_TYPE_ATTRIBUTE, project.getObjects().named(DocsType.class, "maven-repository"))); - RuntimeClasspathMavenRepository runtimeClasspathMavenRepository = project.getTasks() - .create("runtimeClasspathMavenRepository", RuntimeClasspathMavenRepository.class); - runtimeClasspathMavenRepository.getOutputDir() - .set(project.getLayout().getBuildDirectory().dir("runtime-classpath-repository")); + TaskProvider runtimeClasspathMavenRepository = project.getTasks() + .register("runtimeClasspathMavenRepository", RuntimeClasspathMavenRepository.class, + (task) -> task.getOutputDir() + .set(project.getLayout().getBuildDirectory().dir("runtime-classpath-repository"))); project.getDependencies() .components((components) -> components.all(MavenRepositoryComponentMetadataRule.class)); - Sync task = project.getTasks().create("populateTestMavenRepository", Sync.class); - task.setDestinationDir(project.getLayout().getBuildDirectory().dir("test-maven-repository").get().getAsFile()); - task.with(copyIntTestMavenRepositoryFiles(project, runtimeClasspathMavenRepository)); - task.dependsOn(project.getTasks().getByName(MavenRepositoryPlugin.PUBLISH_TO_PROJECT_REPOSITORY_TASK_NAME)); - project.getTasks().getByName(IntegrationTestPlugin.INT_TEST_TASK_NAME).dependsOn(task); + TaskProvider populateRepository = project.getTasks() + .register("populateTestMavenRepository", Sync.class, (task) -> { + task.setDestinationDir( + project.getLayout().getBuildDirectory().dir("test-maven-repository").get().getAsFile()); + task.with(copyIntTestMavenRepositoryFiles(project, runtimeClasspathMavenRepository)); + task.dependsOn( + project.getTasks().getByName(MavenRepositoryPlugin.PUBLISH_TO_PROJECT_REPOSITORY_TASK_NAME)); + }); + project.getTasks().getByName(IntegrationTestPlugin.INT_TEST_TASK_NAME).dependsOn(populateRepository); project.getPlugins() .withType(DockerTestPlugin.class) .all((dockerTestPlugin) -> project.getTasks() - .named(DockerTestPlugin.DOCKER_TEST_TASK_NAME, (dockerTest) -> dockerTest.dependsOn(task))); + .named(DockerTestPlugin.DOCKER_TEST_TASK_NAME, + (dockerTest) -> dockerTest.dependsOn(populateRepository))); } private CopySpec copyIntTestMavenRepositoryFiles(Project project, - RuntimeClasspathMavenRepository runtimeClasspathMavenRepository) { + TaskProvider runtimeClasspathMavenRepository) { CopySpec copySpec = project.copySpec(); copySpec.from(project.getConfigurations().getByName(MavenRepositoryPlugin.MAVEN_REPOSITORY_CONFIGURATION_NAME)); copySpec.from(project.getLayout().getBuildDirectory().dir("maven-repository")); @@ -196,58 +201,65 @@ public class MavenPluginPlugin implements Plugin { return copySpec; } - private void addDocumentPluginGoalsTask(Project project, MavenExec generatePluginDescriptorTask) { - DocumentPluginGoals task = project.getTasks().create("documentPluginGoals", DocumentPluginGoals.class); - File pluginXml = new File(generatePluginDescriptorTask.getOutputs().getFiles().getSingleFile(), "plugin.xml"); - task.getPluginXml().set(pluginXml); - task.getOutputDir().set(project.getLayout().getBuildDirectory().dir("docs/generated/goals/")); - task.dependsOn(generatePluginDescriptorTask); + private void addDocumentPluginGoalsTask(Project project, TaskProvider generatePluginDescriptorTask) { + project.getTasks().register("documentPluginGoals", DocumentPluginGoals.class, (task) -> { + ProjectLayout layout = project.getLayout(); + Provider pluginXml = layout.file(generatePluginDescriptorTask + .map((generateDescriptor) -> new File(generateDescriptor.getOutputs().getFiles().getSingleFile(), + "plugin.xml"))); + task.getPluginXml().set(pluginXml); + task.getOutputDir().set(layout.getBuildDirectory().dir("docs/generated/goals/")); + task.dependsOn(generatePluginDescriptorTask); + }); } - private MavenExec addGenerateHelpMojoTask(Project project, Jar jarTask) { + private TaskProvider addGenerateHelpMojoTask(Project project, Jar jarTask) { Provider helpMojoDir = project.getLayout().getBuildDirectory().dir("help-mojo"); - MavenExec task = createGenerateHelpMojoTask(project, helpMojoDir); - task.dependsOn(createSyncHelpMojoInputsTask(project, helpMojoDir)); + TaskProvider syncHelpMojoInputs = createSyncHelpMojoInputsTask(project, helpMojoDir); + TaskProvider task = createGenerateHelpMojoTask(project, helpMojoDir, syncHelpMojoInputs); includeHelpMojoInJar(jarTask, task); return task; } - private MavenExec createGenerateHelpMojoTask(Project project, Provider helpMojoDir) { - MavenExec task = project.getTasks().create("generateHelpMojo", MavenExec.class); - task.getProjectDir().set(helpMojoDir); - task.args("org.apache.maven.plugins:maven-plugin-plugin:3.6.1:helpmojo"); - task.getOutputs().dir(helpMojoDir.map((directory) -> directory.dir("target/generated-sources/plugin"))); - return task; + private TaskProvider createGenerateHelpMojoTask(Project project, Provider helpMojoDir, + TaskProvider syncHelpMojoInputs) { + return project.getTasks().register("generateHelpMojo", MavenExec.class, (task) -> { + task.getProjectDir().set(helpMojoDir); + task.args("org.apache.maven.plugins:maven-plugin-plugin:3.6.1:helpmojo"); + task.getOutputs().dir(helpMojoDir.map((directory) -> directory.dir("target/generated-sources/plugin"))); + task.dependsOn(syncHelpMojoInputs); + }); } - private Sync createSyncHelpMojoInputsTask(Project project, Provider helpMojoDir) { - Sync task = project.getTasks().create("syncHelpMojoInputs", Sync.class); - task.setDestinationDir(helpMojoDir.get().getAsFile()); - File pomFile = new File(project.getProjectDir(), "src/maven/resources/pom.xml"); - task.from(pomFile, (copy) -> replaceVersionPlaceholder(copy, project)); - return task; + private TaskProvider createSyncHelpMojoInputsTask(Project project, Provider helpMojoDir) { + return project.getTasks().register("syncHelpMojoInputs", Sync.class, (task) -> { + task.setDestinationDir(helpMojoDir.get().getAsFile()); + File pomFile = new File(project.getProjectDir(), "src/maven/resources/pom.xml"); + task.from(pomFile, (copy) -> replaceVersionPlaceholder(copy, project)); + }); } - private void includeHelpMojoInJar(Jar jarTask, JavaExec generateHelpMojoTask) { + private void includeHelpMojoInJar(Jar jarTask, TaskProvider generateHelpMojoTask) { jarTask.from(generateHelpMojoTask).exclude("**/*.java"); jarTask.dependsOn(generateHelpMojoTask); } - private MavenExec addGeneratePluginDescriptorTask(Project project, Jar jarTask, MavenExec generateHelpMojoTask) { + private TaskProvider addGeneratePluginDescriptorTask(Project project, Jar jarTask, + TaskProvider generateHelpMojoTask) { Provider pluginDescriptorDir = project.getLayout().getBuildDirectory().dir("plugin-descriptor"); Provider generatedHelpMojoDir = project.getLayout() .getBuildDirectory() .dir("generated/sources/helpMojo"); SourceSet mainSourceSet = getMainSourceSet(project); project.getTasks().withType(Javadoc.class, this::setJavadocOptions); - FormatHelpMojoSource formattedHelpMojoSource = createFormatHelpMojoSource(project, generateHelpMojoTask, - generatedHelpMojoDir); + TaskProvider formattedHelpMojoSource = createFormatHelpMojoSource(project, + generateHelpMojoTask, generatedHelpMojoDir); project.getTasks().getByName(mainSourceSet.getCompileJavaTaskName()).dependsOn(formattedHelpMojoSource); mainSourceSet.java((javaSources) -> javaSources.srcDir(formattedHelpMojoSource)); - Sync pluginDescriptorInputs = createSyncPluginDescriptorInputs(project, pluginDescriptorDir, mainSourceSet); - pluginDescriptorInputs.dependsOn(mainSourceSet.getClassesTaskName()); - MavenExec task = createGeneratePluginDescriptorTask(project, pluginDescriptorDir); - task.dependsOn(pluginDescriptorInputs); + TaskProvider pluginDescriptorInputs = createSyncPluginDescriptorInputs(project, pluginDescriptorDir, + mainSourceSet); + TaskProvider task = createGeneratePluginDescriptorTask(project, pluginDescriptorDir, + pluginDescriptorInputs); includeDescriptorInJar(jarTask, task); return task; } @@ -262,41 +274,42 @@ public class MavenPluginPlugin implements Plugin { options.addMultilineStringsOption("tag").setValue(Arrays.asList("goal:X", "requiresProject:X", "threadSafe:X")); } - private FormatHelpMojoSource createFormatHelpMojoSource(Project project, MavenExec generateHelpMojoTask, - Provider generatedHelpMojoDir) { - FormatHelpMojoSource formatHelpMojoSource = project.getTasks() - .create("formatHelpMojoSource", FormatHelpMojoSource.class); - formatHelpMojoSource.setGenerator(generateHelpMojoTask); - formatHelpMojoSource.getOutputDir().set(generatedHelpMojoDir); - return formatHelpMojoSource; + private TaskProvider createFormatHelpMojoSource(Project project, + TaskProvider generateHelpMojoTask, Provider generatedHelpMojoDir) { + return project.getTasks().register("formatHelpMojoSource", FormatHelpMojoSource.class, (task) -> { + task.setGenerator(generateHelpMojoTask); + task.getOutputDir().set(generatedHelpMojoDir); + }); } - private Sync createSyncPluginDescriptorInputs(Project project, Provider destination, + private TaskProvider createSyncPluginDescriptorInputs(Project project, Provider destination, SourceSet sourceSet) { - Sync pluginDescriptorInputs = project.getTasks().create("syncPluginDescriptorInputs", Sync.class); - pluginDescriptorInputs.setDestinationDir(destination.get().getAsFile()); - File pomFile = new File(project.getProjectDir(), "src/maven/resources/pom.xml"); - pluginDescriptorInputs.from(pomFile, (copy) -> replaceVersionPlaceholder(copy, project)); - pluginDescriptorInputs.from(sourceSet.getOutput().getClassesDirs(), (sync) -> sync.into("target/classes")); - pluginDescriptorInputs.from(sourceSet.getAllJava().getSrcDirs(), (sync) -> sync.into("src/main/java")); - pluginDescriptorInputs.getInputs().property("version", project.getVersion()); - return pluginDescriptorInputs; + return project.getTasks().register("syncPluginDescriptorInputs", Sync.class, (task) -> { + task.setDestinationDir(destination.get().getAsFile()); + File pomFile = new File(project.getProjectDir(), "src/maven/resources/pom.xml"); + task.from(pomFile, (copy) -> replaceVersionPlaceholder(copy, project)); + task.from(sourceSet.getOutput().getClassesDirs(), (sync) -> sync.into("target/classes")); + task.from(sourceSet.getAllJava().getSrcDirs(), (sync) -> sync.into("src/main/java")); + task.getInputs().property("version", project.getVersion()); + task.dependsOn(sourceSet.getClassesTaskName()); + }); } - private MavenExec createGeneratePluginDescriptorTask(Project project, Provider mavenDir) { - MavenExec generatePluginDescriptor = project.getTasks().create("generatePluginDescriptor", MavenExec.class); - generatePluginDescriptor.args("org.apache.maven.plugins:maven-plugin-plugin:3.6.1:descriptor"); - generatePluginDescriptor.getOutputs() - .dir(mavenDir.map((directory) -> directory.dir("target/classes/META-INF/maven"))); - generatePluginDescriptor.getInputs() - .dir(mavenDir.map((directory) -> directory.dir("target/classes/org"))) - .withPathSensitivity(PathSensitivity.RELATIVE) - .withPropertyName("plugin classes"); - generatePluginDescriptor.getProjectDir().set(mavenDir); - return generatePluginDescriptor; + private TaskProvider createGeneratePluginDescriptorTask(Project project, Provider mavenDir, + TaskProvider pluginDescriptorInputs) { + return project.getTasks().register("generatePluginDescriptor", MavenExec.class, (task) -> { + task.args("org.apache.maven.plugins:maven-plugin-plugin:3.6.1:descriptor"); + task.getOutputs().dir(mavenDir.map((directory) -> directory.dir("target/classes/META-INF/maven"))); + task.getInputs() + .dir(mavenDir.map((directory) -> directory.dir("target/classes/org"))) + .withPathSensitivity(PathSensitivity.RELATIVE) + .withPropertyName("plugin classes"); + task.getProjectDir().set(mavenDir); + task.dependsOn(pluginDescriptorInputs); + }); } - private void includeDescriptorInJar(Jar jar, JavaExec generatePluginDescriptorTask) { + private void includeDescriptorInJar(Jar jar, TaskProvider generatePluginDescriptorTask) { jar.from(generatePluginDescriptorTask, (copy) -> copy.into("META-INF/maven/")); jar.dependsOn(generatePluginDescriptorTask); } @@ -323,14 +336,14 @@ public class MavenPluginPlugin implements Plugin { } private void addExtractVersionPropertiesTask(Project project) { - ExtractVersionProperties extractVersionProperties = project.getTasks() - .create("extractVersionProperties", ExtractVersionProperties.class); - extractVersionProperties.setEffectiveBoms(project.getConfigurations().create("versionProperties")); - extractVersionProperties.getDestination() - .set(project.getLayout() - .getBuildDirectory() - .dir("generated-resources") - .map((dir) -> dir.file("extracted-versions.properties"))); + project.getTasks().register("extractVersionProperties", ExtractVersionProperties.class, (task) -> { + task.setEffectiveBoms(project.getConfigurations().create("versionProperties")); + task.getDestination() + .set(project.getLayout() + .getBuildDirectory() + .dir("generated-resources") + .map((dir) -> dir.file("extracted-versions.properties"))); + }); } public abstract static class FormatHelpMojoSource extends DefaultTask { @@ -342,9 +355,9 @@ public class MavenPluginPlugin implements Plugin { this.objectFactory = objectFactory; } - private Task generator; + private TaskProvider generator; - void setGenerator(Task generator) { + void setGenerator(TaskProvider generator) { this.generator = generator; getInputs().files(this.generator) .withPathSensitivity(PathSensitivity.RELATIVE) @@ -357,7 +370,7 @@ public class MavenPluginPlugin implements Plugin { @TaskAction void syncAndFormat() { FileFormatter formatter = new FileFormatter(); - for (File output : this.generator.getOutputs().getFiles()) { + for (File output : this.generator.get().getOutputs().getFiles()) { formatter.formatFiles(this.objectFactory.fileTree().from(output), StandardCharsets.UTF_8) .forEach((edit) -> save(output, edit)); } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/starters/StarterPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/starters/StarterPlugin.java index 115c7221401..cdf289de50b 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/starters/StarterPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/starters/StarterPlugin.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,6 +29,7 @@ import org.gradle.api.plugins.JavaLibraryPlugin; import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.PluginContainer; import org.gradle.api.provider.Provider; +import org.gradle.api.tasks.TaskProvider; import org.gradle.api.tasks.bundling.Jar; import org.springframework.boot.build.ConventionsPlugin; @@ -53,15 +54,19 @@ public class StarterPlugin implements Plugin { plugins.apply(DeployedPlugin.class); plugins.apply(JavaLibraryPlugin.class); plugins.apply(ConventionsPlugin.class); - StarterMetadata starterMetadata = project.getTasks().create("starterMetadata", StarterMetadata.class); ConfigurationContainer configurations = project.getConfigurations(); Configuration runtimeClasspath = configurations.getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME); - starterMetadata.setDependencies(runtimeClasspath); - Provider destination = project.getLayout().getBuildDirectory().file("starter-metadata.properties"); - starterMetadata.getDestination().set(destination); + TaskProvider starterMetadata = project.getTasks() + .register("starterMetadata", StarterMetadata.class, (task) -> { + task.setDependencies(runtimeClasspath); + Provider destination = project.getLayout() + .getBuildDirectory() + .file("starter-metadata.properties"); + task.getDestination().set(destination); + }); configurations.create("starterMetadata"); project.getArtifacts() - .add("starterMetadata", project.provider(starterMetadata::getDestination), + .add("starterMetadata", starterMetadata.map(StarterMetadata::getDestination), (artifact) -> artifact.builtBy(starterMetadata)); createClasspathConflictsCheck(runtimeClasspath, project); createUnnecessaryExclusionsCheck(runtimeClasspath, project); @@ -70,27 +75,24 @@ public class StarterPlugin implements Plugin { } private void createClasspathConflictsCheck(Configuration classpath, Project project) { - CheckClasspathForConflicts checkClasspathForConflicts = project.getTasks() - .create("check" + StringUtils.capitalize(classpath.getName() + "ForConflicts"), - CheckClasspathForConflicts.class); - checkClasspathForConflicts.setClasspath(classpath); + TaskProvider checkClasspathForConflicts = project.getTasks() + .register("check" + StringUtils.capitalize(classpath.getName() + "ForConflicts"), + CheckClasspathForConflicts.class, (task) -> task.setClasspath(classpath)); project.getTasks().getByName(JavaBasePlugin.CHECK_TASK_NAME).dependsOn(checkClasspathForConflicts); } private void createUnnecessaryExclusionsCheck(Configuration classpath, Project project) { - CheckClasspathForUnnecessaryExclusions checkClasspathForUnnecessaryExclusions = project.getTasks() - .create("check" + StringUtils.capitalize(classpath.getName() + "ForUnnecessaryExclusions"), - CheckClasspathForUnnecessaryExclusions.class); - checkClasspathForUnnecessaryExclusions.setClasspath(classpath); + TaskProvider checkClasspathForUnnecessaryExclusions = project.getTasks() + .register("check" + StringUtils.capitalize(classpath.getName() + "ForUnnecessaryExclusions"), + CheckClasspathForUnnecessaryExclusions.class, (task) -> task.setClasspath(classpath)); project.getTasks().getByName(JavaBasePlugin.CHECK_TASK_NAME).dependsOn(checkClasspathForUnnecessaryExclusions); } private void createUnconstrainedDirectDependenciesCheck(Configuration classpath, Project project) { - CheckClasspathForUnconstrainedDirectDependencies checkClasspathForUnconstrainedDirectDependencies = project + TaskProvider checkClasspathForUnconstrainedDirectDependencies = project .getTasks() - .create("check" + StringUtils.capitalize(classpath.getName() + "ForUnconstrainedDirectDependencies"), - CheckClasspathForUnconstrainedDirectDependencies.class); - checkClasspathForUnconstrainedDirectDependencies.setClasspath(classpath); + .register("check" + StringUtils.capitalize(classpath.getName() + "ForUnconstrainedDirectDependencies"), + CheckClasspathForUnconstrainedDirectDependencies.class, (task) -> task.setClasspath(classpath)); project.getTasks() .getByName(JavaBasePlugin.CHECK_TASK_NAME) .dependsOn(checkClasspathForUnconstrainedDirectDependencies); diff --git a/buildSrc/src/main/java/org/springframework/boot/build/test/IntegrationTestPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/test/IntegrationTestPlugin.java index 34ff445b889..5ad3ab63f63 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/test/IntegrationTestPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/test/IntegrationTestPlugin.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +22,7 @@ import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.JavaPluginExtension; import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.SourceSetContainer; +import org.gradle.api.tasks.TaskProvider; import org.gradle.api.tasks.testing.Test; import org.gradle.language.base.plugins.LifecycleBasePlugin; import org.gradle.plugins.ide.eclipse.EclipsePlugin; @@ -51,7 +52,7 @@ public class IntegrationTestPlugin implements Plugin { private void configureIntegrationTesting(Project project) { SourceSet intTestSourceSet = createSourceSet(project); - Test intTest = createTestTask(project, intTestSourceSet); + TaskProvider intTest = createTestTask(project, intTestSourceSet); project.getTasks().getByName(LifecycleBasePlugin.CHECK_TASK_NAME).dependsOn(intTest); project.getPlugins().withType(EclipsePlugin.class, (eclipsePlugin) -> { EclipseModel eclipse = project.getExtensions().getByType(EclipseModel.class); @@ -71,14 +72,14 @@ public class IntegrationTestPlugin implements Plugin { return intTestSourceSet; } - private Test createTestTask(Project project, SourceSet intTestSourceSet) { - Test intTest = project.getTasks().create(INT_TEST_TASK_NAME, Test.class); - intTest.setGroup(LifecycleBasePlugin.VERIFICATION_GROUP); - intTest.setDescription("Runs integration tests."); - intTest.setTestClassesDirs(intTestSourceSet.getOutput().getClassesDirs()); - intTest.setClasspath(intTestSourceSet.getRuntimeClasspath()); - intTest.shouldRunAfter(JavaPlugin.TEST_TASK_NAME); - return intTest; + private TaskProvider createTestTask(Project project, SourceSet intTestSourceSet) { + return project.getTasks().register(INT_TEST_TASK_NAME, Test.class, (task) -> { + task.setGroup(LifecycleBasePlugin.VERIFICATION_GROUP); + task.setDescription("Runs integration tests."); + task.setTestClassesDirs(intTestSourceSet.getOutput().getClassesDirs()); + task.setClasspath(intTestSourceSet.getRuntimeClasspath()); + task.shouldRunAfter(JavaPlugin.TEST_TASK_NAME); + }); } } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/test/SystemTestPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/test/SystemTestPlugin.java index 9259f8e3693..1fb2e5330cd 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/test/SystemTestPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/test/SystemTestPlugin.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,6 +24,7 @@ import org.gradle.api.plugins.JavaPluginExtension; import org.gradle.api.specs.Spec; import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.SourceSetContainer; +import org.gradle.api.tasks.TaskProvider; import org.gradle.api.tasks.testing.Test; import org.gradle.language.base.plugins.LifecycleBasePlugin; import org.gradle.plugins.ide.eclipse.EclipsePlugin; @@ -76,17 +77,18 @@ public class SystemTestPlugin implements Plugin { return systemTestSourceSet; } - private void createTestTask(Project project, SourceSet systemTestSourceSet) { - Test systemTest = project.getTasks().create(SYSTEM_TEST_TASK_NAME, Test.class); - systemTest.setGroup(LifecycleBasePlugin.VERIFICATION_GROUP); - systemTest.setDescription("Runs system tests."); - systemTest.setTestClassesDirs(systemTestSourceSet.getOutput().getClassesDirs()); - systemTest.setClasspath(systemTestSourceSet.getRuntimeClasspath()); - systemTest.shouldRunAfter(JavaPlugin.TEST_TASK_NAME); - if (isCi()) { - systemTest.getOutputs().upToDateWhen(NEVER); - systemTest.getOutputs().doNotCacheIf("System tests are always rerun on CI", (task) -> true); - } + private TaskProvider createTestTask(Project project, SourceSet systemTestSourceSet) { + return project.getTasks().register(SYSTEM_TEST_TASK_NAME, Test.class, (task) -> { + task.setGroup(LifecycleBasePlugin.VERIFICATION_GROUP); + task.setDescription("Runs system tests."); + task.setTestClassesDirs(systemTestSourceSet.getOutput().getClassesDirs()); + task.setClasspath(systemTestSourceSet.getRuntimeClasspath()); + task.shouldRunAfter(JavaPlugin.TEST_TASK_NAME); + if (isCi()) { + task.getOutputs().upToDateWhen(NEVER); + task.getOutputs().doNotCacheIf("System tests are always rerun on CI", (spec) -> true); + } + }); } private boolean isCi() { diff --git a/buildSrc/src/test/java/org/springframework/boot/build/antora/GenerateAntoraPlaybookTests.java b/buildSrc/src/test/java/org/springframework/boot/build/antora/GenerateAntoraPlaybookTests.java index dfa2676f20d..b8ae078f7a2 100644 --- a/buildSrc/src/test/java/org/springframework/boot/build/antora/GenerateAntoraPlaybookTests.java +++ b/buildSrc/src/test/java/org/springframework/boot/build/antora/GenerateAntoraPlaybookTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -78,9 +78,10 @@ class GenerateAntoraPlaybookTests { File projectDir = new File(rootProjectDir, "project"); projectDir.mkdirs(); Project project = ProjectBuilder.builder().withProjectDir(projectDir).withParent(rootProject).build(); - GenerateAntoraPlaybook task = project.getTasks().create("generateAntoraPlaybook", GenerateAntoraPlaybook.class); - customizer.accept(task); - task.writePlaybookYml(); + project.getTasks() + .register("generateAntoraPlaybook", GenerateAntoraPlaybook.class, customizer::accept) + .get() + .writePlaybookYml(); } } diff --git a/buildSrc/src/test/java/org/springframework/boot/build/architecture/ArchitectureCheckTests.java b/buildSrc/src/test/java/org/springframework/boot/build/architecture/ArchitectureCheckTests.java index ff419b347ab..79a8b649523 100644 --- a/buildSrc/src/test/java/org/springframework/boot/build/architecture/ArchitectureCheckTests.java +++ b/buildSrc/src/test/java/org/springframework/boot/build/architecture/ArchitectureCheckTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,6 +28,7 @@ import org.junit.jupiter.api.io.TempDir; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.util.FileSystemUtils; +import org.springframework.util.function.ThrowingConsumer; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; @@ -204,14 +205,15 @@ class ArchitectureCheckTests { }); } - private void prepareTask(String classes, Callback callback) throws Exception { + private void prepareTask(String classes, ThrowingConsumer callback) throws Exception { File projectDir = new File(this.temp, "project"); projectDir.mkdirs(); copyClasses(classes, projectDir); Project project = ProjectBuilder.builder().withProjectDir(projectDir).build(); - ArchitectureCheck architectureCheck = project.getTasks() - .create("checkArchitecture", ArchitectureCheck.class, (task) -> task.setClasses(project.files("classes"))); - callback.accept(architectureCheck); + project.getTasks().register("checkArchitecture", ArchitectureCheck.class, (task) -> { + task.setClasses(project.files("classes")); + callback.accept(task); + }); } private void copyClasses(String name, File projectDir) throws IOException { @@ -221,10 +223,4 @@ class ArchitectureCheckTests { new File(projectDir, "classes/org/springframework/boot/build/architecture/" + name)); } - private interface Callback { - - void accept(T item) throws Exception; - - } - } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e2847c82004..cea7a793a84 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.11.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index f5feea6d6b1..f3b75f3b0d4 100755 --- a/gradlew +++ b/gradlew @@ -86,8 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum diff --git a/spring-boot-project/spring-boot-tools/spring-boot-antlib/build.gradle b/spring-boot-project/spring-boot-tools/spring-boot-antlib/build.gradle index 644cfda1c4f..1ec1a3aa592 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-antlib/build.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-antlib/build.gradle @@ -26,7 +26,7 @@ dependencies { } task syncIntegrationTestSources(type: Sync) { - destinationDir file(layout.buildDirectory.dir("it")) + destinationDir = file(layout.buildDirectory.dir("it")) from file("src/it") filter(springRepositoryTransformers.ant()) } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-cli/build.gradle b/spring-boot-project/spring-boot-tools/spring-boot-cli/build.gradle index 15adb4f29b1..98467f3ffbb 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-cli/build.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-cli/build.gradle @@ -116,8 +116,8 @@ if (BuildProperties.get(project).buildType() == BuildType.OPEN_SOURCE) { } def homebrewFormulaArtifact = artifacts.add("archives", file(layout.buildDirectory.file("homebrew/spring-boot.rb"))) { - type "rb" - classifier "homebrew" + type = "rb" + classifier = "homebrew" builtBy "homebrewFormula" } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/buildinfo/BuildInfoTests.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/buildinfo/BuildInfoTests.java index 84eb1c1ca86..6a8c6a63c70 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/buildinfo/BuildInfoTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/buildinfo/BuildInfoTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -181,7 +181,7 @@ class BuildInfoTests { } private BuildInfo createTask(Project project) { - return project.getTasks().create("testBuildInfo", BuildInfo.class); + return project.getTasks().register("testBuildInfo", BuildInfo.class).get(); } private Properties buildInfoProperties(BuildInfo task) { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/AbstractBootArchiveTests.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/AbstractBootArchiveTests.java index 25c604ca4fa..42168e1a9b6 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/AbstractBootArchiveTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/AbstractBootArchiveTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -116,7 +116,7 @@ abstract class AbstractBootArchiveTests { projectDir.mkdirs(); this.project = GradleProjectBuilder.builder().withProjectDir(projectDir).build(); this.project.setDescription("Test project for " + this.taskClass.getSimpleName()); - this.task = configure(this.project.getTasks().create("testArchive", this.taskClass)); + this.task = this.project.getTasks().register("testArchive", this.taskClass, this::configure).get(); } @Test diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageTests.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageTests.java index c5ef89486d6..16678886457 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -57,7 +57,7 @@ class BootBuildImageTests { projectDir.mkdirs(); this.project = GradleProjectBuilder.builder().withProjectDir(projectDir).withName("build-image-test").build(); this.project.setDescription("Test project for BootBuildImage"); - this.buildImage = this.project.getTasks().create("buildImage", BootBuildImage.class); + this.buildImage = this.project.getTasks().register("buildImage", BootBuildImage.class).get(); } @Test diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-ant/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-ant/build.gradle index 43ef4f3d14a..faa05c55d62 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-ant/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-ant/build.gradle @@ -47,14 +47,14 @@ task syncTestRepository(type: Sync) { } task syncAntSources(type: Sync) { - destinationDir file(layout.buildDirectory.dir("ant")) + destinationDir = file(layout.buildDirectory.dir("ant")) from project.layout.projectDirectory include "*.xml" filter(springRepositoryTransformers.ant()) } task antRun(type: JavaExec) { - workingDir layout.buildDirectory.dir("ant") + workingDir = layout.buildDirectory.dir("ant") dependsOn syncTestRepository, syncAntSources, configurations.antDependencies classpath = configurations.antDependencies; mainClass = "org.apache.tools.ant.launch.Launcher"