<lambda>null1import java.io.File 2 import java.util.Properties 3 import org.gradle.api.DefaultTask 4 import org.gradle.api.tasks.OutputFile 5 import org.gradle.api.tasks.TaskAction 6 7 abstract class ProvideBuildClasspathTask : DefaultTask() { 8 @get:OutputFile abstract var outFile: File 9 10 @TaskAction 11 @Throws(Exception::class) 12 fun writeProperties() { 13 val props = Properties() 14 val usePreinstrumentedJars = System.getProperty(PREINSTRUMENTED_KEY, "true").toBoolean() 15 16 AndroidSdk.ALL_SDKS.forEach { androidSdk -> 17 val configurationName = "sdk${androidSdk.apiLevel}" 18 val coordinates = 19 if (usePreinstrumentedJars) { 20 androidSdk.preinstrumentedCoordinates 21 } else { 22 androidSdk.coordinates 23 } 24 val config = 25 project.configurations.create(configurationName) { 26 dependencies.add(project.dependencies.create(coordinates)) 27 } 28 29 props.setProperty(coordinates, config.files.joinToString(File.pathSeparator)) 30 } 31 32 val outDir = outFile.parentFile 33 if (!outDir.isDirectory) { 34 outDir.mkdirs() 35 } 36 37 outFile.printWriter().use { out -> props.store(out, "# GENERATED by $this -- do not edit") } 38 } 39 40 private companion object { 41 private const val PREINSTRUMENTED_KEY = "robolectric.usePreinstrumentedJars" 42 } 43 } 44