@@ -4,6 +4,7 @@ import org.gradle.api.GradleException
44import org.gradle.api.JavaVersion
55import org.gradle.api.Plugin
66import org.gradle.api.Project
7+ import org.gradle.api.file.FileSystemOperations
78import org.gradle.api.plugins.JavaPluginExtension
89import org.gradle.api.tasks.JavaExec
910import org.gradle.api.tasks.SourceSet
@@ -13,6 +14,11 @@ import org.gradle.api.tasks.testing.Test
1314import org.gradle.jvm.tasks.Jar
1415import org.gradle.jvm.toolchain.JavaLanguageVersion
1516import org.gradle.jvm.toolchain.JavaToolchainService
17+ import org.gradle.kotlin.dsl.create
18+ import org.gradle.kotlin.dsl.getByType
19+ import org.gradle.kotlin.dsl.named
20+ import org.gradle.kotlin.dsl.register
21+ import org.gradle.kotlin.dsl.withType
1622import java.io.File
1723import java.nio.file.Files
1824import java.nio.file.Paths
@@ -26,7 +32,7 @@ abstract class CallSiteInstrumentationPlugin : Plugin<Project>{
2632
2733 override fun apply (project : Project ) {
2834 // Create plugin extension
29- val extension = project.extensions.create(" csi" , CallSiteInstrumentationExtension :: class .java )
35+ val extension = project.extensions.create< CallSiteInstrumentationExtension > (" csi" )
3036 project.afterEvaluate {
3137 configureSourceSets(project, extension)
3238 createTasks(project, extension)
@@ -48,7 +54,7 @@ abstract class CallSiteInstrumentationPlugin : Plugin<Project>{
4854 extendsFrom(project.configurations.named(mainSourceSet.compileClasspathConfigurationName).get())
4955 }
5056
51- project.tasks.named(csiSourceSet.getCompileTaskName(" java" ), AbstractCompile :: class .java ) {
57+ project.tasks.named< AbstractCompile > (csiSourceSet.getCompileTaskName(" java" )) {
5258 sourceCompatibility = JavaVersion .VERSION_1_8 .toString()
5359 targetCompatibility = JavaVersion .VERSION_1_8 .toString()
5460 }
@@ -61,7 +67,7 @@ abstract class CallSiteInstrumentationPlugin : Plugin<Project>{
6167 project.dependencies.add(" testImplementation" , csiSourceSet.output)
6268
6369 // include classes in final JAR
64- project.tasks.named(" jar" , Jar :: class .java ) {
70+ project.tasks.named< Jar > (" jar" ) {
6571 from(csiSourceSet.output.classesDirs)
6672 }
6773 }
@@ -86,19 +92,21 @@ abstract class CallSiteInstrumentationPlugin : Plugin<Project>{
8692 }
8793
8894 private fun getSourceSets (project : Project ): SourceSetContainer {
89- return project.extensions.getByType( JavaPluginExtension :: class .java ).sourceSets
95+ return project.extensions.getByType< JavaPluginExtension >( ).sourceSets
9096 }
9197
9298 private fun createTasks (project : Project , extension : CallSiteInstrumentationExtension ) {
9399 registerGenerateCallSiteTask(project, extension, " compileJava" )
94100 val targetFolder = extension.targetFolder.get().asFile
95- project.tasks.withType(AbstractCompile ::class .java).matching {
101+
102+ project.tasks.withType<AbstractCompile >().matching {
96103 task -> task.name.startsWith(" compileTest" )
97104 }.configureEach {
98105 inputs.dir(extension.targetFolder)
99106 classpath + = project.files(targetFolder)
100107 }
101- project.tasks.withType(Test ::class .java).configureEach {
108+
109+ project.tasks.withType<Test >().configureEach {
102110 inputs.dir(extension.targetFolder)
103111 classpath + = project.files(targetFolder)
104112 }
@@ -123,23 +131,25 @@ abstract class CallSiteInstrumentationPlugin : Plugin<Project>{
123131 " libs" ,
124132 " call-site-instrumentation-plugin-all.jar"
125133 ).toFile()
126- val compileTask = project.tasks.named(compileTaskName, AbstractCompile :: class .java )
127- val callSiteGeneratorTask = project.tasks.register(taskName, JavaExec :: class .java ) {
134+ val compileTask = project.tasks.named< AbstractCompile > (compileTaskName)
135+ val callSiteGeneratorTask = project.tasks.register< JavaExec > (taskName) {
128136 // Task description
129137 group = " call site instrumentation"
130- description = " Generates call sites from ${ compileTaskName} "
138+ description = " Generates call sites from $compileTaskName "
131139 // Task input & output
132140 val output = extension.targetFolder
133141 val inputProvider = compileTask.map { it.destinationDirectory.get() }
134142 inputs.dir(inputProvider)
135143 outputs.dir(output)
144+
136145 // JavaExec configuration
137146 if (extension.javaVersion.isPresent) {
138147 configureLanguage(this , extension.javaVersion.get())
139148 }
140149 jvmArgumentProviders.add({ extension.jvmArgs.get() })
141150 classpath(pluginJarFile)
142151 mainClass.set(CALL_SITE_INSTRUMENTER_MAIN_CLASS )
152+
143153 // Write the call site instrumenter arguments into a temporary file
144154 doFirst {
145155 val programClassPath = getProgramClasspath(project).map { it.toString() }
@@ -179,12 +189,12 @@ abstract class CallSiteInstrumentationPlugin : Plugin<Project>{
179189 private fun getProgramClasspath (project : Project ): List <File > {
180190 val classpath = ArrayList <File >()
181191 // 1. Compilation outputs - exclude latestDep and forked test variants
182- project.tasks.withType( AbstractCompile :: class .java )
192+ project.tasks.withType< AbstractCompile >( )
183193 .filter { task -> ! task.name.contains(" LatestDep" , ignoreCase = true ) && ! task.name.contains(" Forked" , ignoreCase = true ) }
184194 .map { it.destinationDirectory.asFile.get() }
185195 .forEach(classpath::add)
186196 // 2. Compile time dependencies - exclude latestDep and forked test variants
187- project.tasks.withType( AbstractCompile :: class .java )
197+ project.tasks.withType< AbstractCompile >( )
188198 .filter { task -> ! task.name.contains(" LatestDep" , ignoreCase = true ) && ! task.name.contains(" Forked" , ignoreCase = true ) }
189199 .flatMap { it.classpath }
190200 .forEach(classpath::add)
0 commit comments