Skip to content

Commit c6e5483

Browse files
authored
Replace eager gradle task creation with task avoidance api (#79442)
* Replace eager gradle task creation with task avoidance api Some more eagerly created tasks sneaked into the 7.x branch lately * Fix typo in integTest configuration
1 parent cb2e5b3 commit c6e5483

File tree

16 files changed

+100
-57
lines changed

16 files changed

+100
-57
lines changed

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/rewrite/RewritePlugin.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.gradle.api.plugins.JavaBasePlugin;
1717
import org.gradle.api.plugins.JavaPluginExtension;
1818
import org.gradle.api.provider.ProviderFactory;
19+
import org.gradle.api.tasks.TaskProvider;
1920

2021
import javax.inject.Inject;
2122

@@ -47,14 +48,20 @@ public void apply(Project project) {
4748
details.useVersion(extension.getRewriteVersion());
4849
}
4950
});
50-
RewriteTask rewriteTask = project.getTasks().create(REWRITE_TASKNAME, RewriteTask.class, rewriteConf, extension);
51-
rewriteTask.getActiveRecipes().convention(providerFactory.provider(() -> extension.getActiveRecipes()));
52-
rewriteTask.getConfigFile().convention(projectLayout.file(providerFactory.provider(() -> extension.getConfigFile())));
51+
TaskProvider<RewriteTask> rewriteTaskProvider = project.getTasks()
52+
.register(REWRITE_TASKNAME, RewriteTask.class, rewriteConf, extension);
53+
rewriteTaskProvider.configure((rewriteTask) -> {
54+
rewriteTask.getActiveRecipes().convention(providerFactory.provider(() -> extension.getActiveRecipes()));
55+
rewriteTask.getConfigFile().convention(projectLayout.file(providerFactory.provider(() -> extension.getConfigFile())));
56+
});
57+
5358
project.getPlugins().withType(JavaBasePlugin.class, javaBasePlugin -> {
5459
JavaPluginExtension javaPluginExtension = project.getExtensions().getByType(JavaPluginExtension.class);
5560
javaPluginExtension.getSourceSets().all(sourceSet -> {
56-
rewriteTask.getSourceFiles().from(sourceSet.getAllSource());
57-
rewriteTask.getDependencyFiles().from(sourceSet.getCompileClasspath());
61+
rewriteTaskProvider.configure(r -> {
62+
r.getSourceFiles().from(sourceSet.getAllSource());
63+
r.getDependencyFiles().from(sourceSet.getCompileClasspath());
64+
});
5865
});
5966
});
6067
}

client/transport/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ dependencies {
2323
testImplementation "org.hamcrest:hamcrest:${versions.hamcrest}"
2424
}
2525

26-
forbiddenApisTest {
26+
tasks.named("forbiddenApisTest").configure {
2727
// we don't use the core test-framework, no lucene classes present so we don't want the es-test-signatures to
2828
// be pulled in
2929
replaceSignatureFiles 'jdk-signatures', 'es-all-signatures'
3030
}
3131

32-
testingConventions {
32+
tasks.named("testingConventions").configure {
3333
naming.clear()
3434
naming {
3535
Tests {

libs/core/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,19 @@ if (!isEclipse) {
3131
java11Implementation sourceSets.main.output
3232
}
3333

34-
compileJava11Java {
34+
tasks.named("compileJava11Java").configure {
3535
sourceCompatibility = 11
3636
targetCompatibility = 11
3737
}
3838

39-
forbiddenApisJava11 {
39+
tasks.named("forbiddenApisJava11").configure {
4040
if (BuildParams.runtimeJavaVersion < JavaVersion.VERSION_11) {
4141
targetCompatibility = JavaVersion.VERSION_11.getMajorVersion()
4242
}
4343
replaceSignatureFiles 'jdk-signatures'
4444
}
4545

46-
jar {
46+
tasks.named("jar").configure {
4747
metaInf {
4848
into 'versions/11'
4949
from sourceSets.java11.output

plugins/repository-s3/build.gradle

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,16 @@ tasks.named("bundlePlugin").configure {
7676
}
7777
}
7878

79-
task testRepositoryCreds(type: Test) {
79+
def testRepositoryCreds = tasks.register("testRepositoryCreds", Test) {
8080
include '**/RepositoryCredentialsTests.class'
8181
systemProperty 'es.allow_insecure_settings', 'true'
8282
}
83-
check.dependsOn(testRepositoryCreds)
8483

85-
test {
84+
tasks.named('check').configure {
85+
dependsOn(testRepositoryCreds)
86+
}
87+
88+
tasks.named('test').configure {
8689
// this is tested explicitly in separate test tasks
8790
exclude '**/RepositoryCredentialsTests.class'
8891
exclude '**/S3RepositoryThirdPartyTests.class'

qa/smoke-test-client/build.gradle

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,23 @@ dependencies {
1717
testImplementation project(':client:transport') // randomly swapped in as a transport
1818
}
1919

20-
task singleNodeIntegTest(type: RestIntegTestTask) {
21-
mustRunAfter(precommit)
20+
def singleNodeIntegTest = tasks.register("singleNodeIntegTest", RestIntegTestTask) {
21+
mustRunAfter("precommit")
2222
}
2323

24-
testClusters.singleNodeIntegTest {
24+
testClusters.matching { it.name == "singleNodeIntegTest" }.configureEach {
2525
setting 'discovery.type', 'single-node'
2626
}
2727

28-
integTest {
28+
tasks.named("integTest").configure {
2929
dependsOn singleNodeIntegTest
3030
}
3131

32-
check.dependsOn(integTest)
33-
32+
tasks.named("check").configure {
33+
dependsOn("integTest")
34+
}
3435

35-
testingConventions {
36+
tasks.named("testingConventions").configure {
3637
naming.clear()
3738
naming {
3839
IT {

qa/translog-policy/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ configurations {
8585
testArtifacts.extendsFrom testRuntime
8686
}
8787

88-
task testJar(type: Jar) {
88+
def testJar = tasks.register("testJar", Jar) {
8989
archiveAppendix.set('test')
9090
from sourceSets.test.output
9191
}

server/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ if (!isEclipse) {
4141
java11Implementation sourceSets.main.output
4242
}
4343

44-
compileJava11Java {
44+
tasks.named("compileJava11Java").configure {
4545
sourceCompatibility = 11
4646
targetCompatibility = 11
4747
}
@@ -54,7 +54,7 @@ if (!isEclipse) {
5454
}
5555
}
5656

57-
jar {
57+
tasks.named("jar").configure {
5858
metaInf {
5959
into 'versions/11'
6060
from sourceSets.java11.output

x-pack/plugin/build.gradle

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ subprojects {
2929
project.dependencies.add('featureAwarePlugin', project.sourceSets.main.output.getClassesDirs())
3030

3131
File successMarker = file("$buildDir/markers/featureAware")
32-
task featureAwareCheck(type: LoggedExec) {
32+
def featureAwareCheck = tasks.register("featureAwareCheck", LoggedExec) {
3333
description = "Runs FeatureAwareCheck on main classes."
3434
dependsOn project.configurations.featureAwarePlugin
3535
outputs.file(successMarker)
@@ -40,7 +40,7 @@ subprojects {
4040
final List files = []
4141
if (project.sourceSets.findByName("main")) {
4242
files.add(project.sourceSets.main.output.classesDirs)
43-
dependsOn project.tasks.classes
43+
dependsOn project.tasks.named('classes')
4444
}
4545
// filter out non-existent classes directories from empty source sets
4646
final FileCollection classDirectories = project.files(files).filter { it.exists() }
@@ -55,7 +55,9 @@ subprojects {
5555
}
5656
}
5757

58-
project.precommit.dependsOn featureAwareCheck
58+
project.tasks.named("precommit").configure {
59+
dependsOn featureAwareCheck
60+
}
5961
}
6062
}
6163
}

x-pack/qa/security-client-tests/build.gradle

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,19 @@ dependencies {
77
}
88

99
String outputDir = "${buildDir}/generated-resources/${project.name}"
10-
task copyXPackPluginProps(type: Copy) {
10+
def copyXPackPluginProps = tasks.register("copyXPackPluginProps", Copy) {
1111
from project(xpackModule('core')).file('src/main/plugin-metadata')
12+
// TODO revisit resolving other modules plugin properties
1213
from project(xpackModule('core')).tasks.pluginProperties
1314
into outputDir
1415
}
1516
project.sourceSets.test.output.dir(outputDir, builtBy: copyXPackPluginProps)
1617

17-
integTest {
18+
tasks.named("integTest").configure {
1819
systemProperty 'tests.security.manager', 'false'
1920
}
2021

21-
testClusters.integTest {
22+
testClusters.matching { it.name == "integTest" }.configureEach {
2223
testDistribution = "default"
2324
setting 'xpack.security.enabled', 'true'
2425
setting 'xpack.ml.enabled', 'false'

x-pack/qa/security-migrate-tests/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ tasks.matching { it.name.equals('integTest')}.configureEach {integTestTask ->
2727
nonInputProperties.systemProperty 'tests.config.dir', "${-> testClusters.integTest.singleNode().getConfigDir()}"
2828
}
2929

30-
testingConventions {
30+
tasks.named("testingConventions").configure {
3131
naming.clear()
3232
naming {
3333
IT {

0 commit comments

Comments
 (0)