diff --git a/buildSrc/src/main/kotlin/datadog/gradle/plugin/dump/DumpHangedTestPlugin.kt b/buildSrc/src/main/kotlin/datadog/gradle/plugin/dump/DumpHangedTestPlugin.kt index 19db11b8dd8..9f62521d414 100644 --- a/buildSrc/src/main/kotlin/datadog/gradle/plugin/dump/DumpHangedTestPlugin.kt +++ b/buildSrc/src/main/kotlin/datadog/gradle/plugin/dump/DumpHangedTestPlugin.kt @@ -53,25 +53,24 @@ class DumpHangedTestPlugin : Plugin { override fun apply(project: Project) { if (project.rootProject != project) { - return + throw IllegalStateException("Only the root project can apply plugin") } val scheduler = project.gradle.sharedServices .registerIfAbsent("dumpHangedTestScheduler", DumpSchedulerService::class.java) - // Create plugin properties. val props = project.extensions.create("dumpHangedTest", DumpHangedTestProperties::class.java) - fun configure(p: Project) { - p.tasks.withType().configureEach { - doFirst { schedule(this, scheduler, props) } - doLast { cleanup(this) } + // Configure test tasks per project from the root plugin instance, only once the `java` + // plugin (which registers the `Test` tasks) has been applied to a given project. + project.allprojects { + pluginManager.withPlugin("java") { + tasks.withType().configureEach { + doFirst { schedule(this, scheduler, props) } + doLast { cleanup(this) } + } } } - - configure(project) - - project.subprojects(::configure) } private fun schedule(t: Task, scheduler: Provider, props: DumpHangedTestProperties) {