@@ -8,11 +8,14 @@ import com.android.build.api.variant.GeneratesTestApk
8
8
import com.android.build.api.variant.TestVariant
9
9
import com.android.build.api.variant.Variant
10
10
import com.malinskiy.marathon.android.findAdbPath
11
- import com.malinskiy.marathon.worker.MarathonWorker
12
11
import org.gradle.api.Plugin
13
12
import org.gradle.api.Project
14
13
import org.gradle.api.plugins.JavaBasePlugin
15
14
import org.gradle.api.tasks.TaskProvider
15
+ import org.gradle.kotlin.dsl.create
16
+ import org.gradle.kotlin.dsl.named
17
+ import org.gradle.kotlin.dsl.register
18
+ import org.gradle.kotlin.dsl.registerIfAbsent
16
19
17
20
class MarathonPlugin : Plugin <Project > {
18
21
override fun apply (project : Project ) {
@@ -31,16 +34,16 @@ class MarathonPlugin : Plugin<Project> {
31
34
}
32
35
33
36
private fun Project.configureRootProject () {
34
- val marathonConfig = extensions.create(MarathonExtension .NAME , MarathonExtension :: class .java )
37
+ val marathonConfig = extensions.create< MarathonExtension > (MarathonExtension .NAME )
35
38
marathonConfig.initDefaults()
36
39
37
- tasks.register(WORKER_TASK_NAME , MarathonWorkerRunTask ::class .java)
38
-
39
- gradle.projectsEvaluated {
40
- val outputDir = layout.buildDirectory.dir(" reports/marathon" ).get().asFile
41
- val configuration = createCommonConfiguration(marathonConfig, findAdbPath(projectDir), outputDir)
42
- MarathonWorker .initialize(configuration)
40
+ gradle.sharedServices.registerIfAbsent(MarathonBuildService .NAME , MarathonBuildService ::class ) {
41
+ parameters.adbPath.set(findAdbPath(projectDir))
42
+ parameters.outputDir.set(layout.buildDirectory.dir(" reports/marathon" ))
43
+ parameters.marathonConfig.set(marathonConfig)
43
44
}
45
+
46
+ tasks.register<MarathonWorkerRunTask >(WORKER_TASK_NAME )
44
47
}
45
48
46
49
private fun Project.configureAndroidProject () {
@@ -49,7 +52,7 @@ class MarathonPlugin : Plugin<Project> {
49
52
description = " Runs all the instrumentation test variations on all the connected devices"
50
53
}
51
54
52
- val marathonWorkerTask = rootProject.tasks.named(WORKER_TASK_NAME , MarathonWorkerRunTask :: class .java )
55
+ val marathonWorkerTask = rootProject.tasks.named< MarathonWorkerRunTask > (WORKER_TASK_NAME )
53
56
val androidComponents = extensions.getByType(AndroidComponentsExtension ::class .java)
54
57
androidComponents.onVariants { variant ->
55
58
variant.components
@@ -66,7 +69,7 @@ class MarathonPlugin : Plugin<Project> {
66
69
testComponent : Component ,
67
70
marathonWorkerTask : TaskProvider <MarathonWorkerRunTask >
68
71
): TaskProvider <MarathonScheduleTestsToWorkerTask > =
69
- tasks.register(variant.computeTaskName(TASK_PREFIX , " androidTest" ), MarathonScheduleTestsToWorkerTask :: class .java ) {
72
+ tasks.register< MarathonScheduleTestsToWorkerTask > (variant.computeTaskName(TASK_PREFIX , " androidTest" )) {
70
73
group = JavaBasePlugin .VERIFICATION_GROUP
71
74
description = " Runs instrumentation tests on all the connected devices for '${variant.name} ' " +
72
75
" variation and generates a report with screenshots"
0 commit comments