[Build] Migrate most of the build logic from Project.buildDir usage

It's going to be deprecated in Gradle 8.3

There's currently no way to pass a `org.gradle.api.provider.Provider` to the JavaExec.systemProperty or Test.systemProperty. There's a workaround using `org.gradle.process.CommandLineArgumentProvider`, but I intentionally don't rework these calls as Gradle is going to allow passing providers to configure system properties: https://github.com/gradle/gradle/issues/12247#issuecomment-1568427242
^KTI-1473 In Progress
This commit is contained in:
Alexander.Likhachev
2023-10-11 22:42:51 +02:00
committed by Space Team
parent b784544f8d
commit a19bd2ed2e
69 changed files with 328 additions and 306 deletions
+6 -9
View File
@@ -1,6 +1,5 @@
import org.gradle.internal.os.OperatingSystem
import java.net.URI
import javax.inject.Inject
repositories {
ivy {
@@ -54,8 +53,7 @@ val androidPlatform by configurations.creating
val buildTools by configurations.creating
val androidEmulator by configurations.creating
val libsDestDir = File(buildDir, "androidSdk/platforms/android-26")
val sdkDestDir = File(buildDir, "androidSdk")
val sdkDestDirName = "androidSdk"
val toolsOs = when {
OperatingSystem.current().isWindows -> "windows"
@@ -107,12 +105,11 @@ fun unzipSdkTask(
val dependency = "google:$sdkName:$sdkVer${coordinatesSuffix.takeIf { it.isNotEmpty() }?.let { ":$it" } ?: ""}@$ext"
dependencies.add(createdCfg.name, dependency)
val sdkDestDir = sdkDestDir
val unzipTask = tasks.register("unzip_$id") {
val cfg = project.configurations.getByName(id)
dependsOn(cfg)
inputs.files(cfg)
val targetDir = project.file("$sdkDestDir/$destinationSubdir")
val targetDir = project.layout.buildDirectory.dir("$sdkDestDirName/$destinationSubdir")
outputs.dirs(targetDir)
val injected = project.objects.newInstance<Injected>()
val fs = injected.fs
@@ -159,17 +156,17 @@ unzipSdkTask("armeabi-v7a", "19", "system-images/android-19/default","r05", prep
unzipSdkTask("x86", "19", "system-images/android-19/default", "r06", prepareTask = prepareEmulator)
val clean by task<Delete> {
delete(buildDir)
delete(layout.buildDirectory)
}
artifacts.add(androidSdk.name, file("$sdkDestDir")) {
artifacts.add(androidSdk.name, layout.buildDirectory.dir(sdkDestDirName)) {
builtBy(prepareSdk)
}
artifacts.add(androidJar.name, file("$libsDestDir/android.jar")) {
artifacts.add(androidJar.name, layout.buildDirectory.file("$sdkDestDirName/platforms/android-26/android.jar")) {
builtBy(preparePlatform)
}
artifacts.add(androidEmulator.name, file("$sdkDestDir")) {
artifacts.add(androidEmulator.name, layout.buildDirectory.dir(sdkDestDirName)) {
builtBy(prepareEmulator)
}
+10 -5
View File
@@ -1,6 +1,10 @@
import org.jetbrains.org.objectweb.asm.*
import org.jetbrains.org.objectweb.asm.AnnotationVisitor
import org.jetbrains.org.objectweb.asm.ClassReader
import org.jetbrains.org.objectweb.asm.ClassReader.SKIP_CODE
import org.jetbrains.org.objectweb.asm.Opcodes.*
import org.jetbrains.org.objectweb.asm.ClassVisitor
import org.jetbrains.org.objectweb.asm.ClassWriter
import org.jetbrains.org.objectweb.asm.Opcodes.ACC_PUBLIC
import org.jetbrains.org.objectweb.asm.Opcodes.API_VERSION
import java.util.zip.ZipFile
plugins {
@@ -20,7 +24,7 @@ val toolsJarStubs by tasks.registering {
val toolsJarFile = toolsJar().singleFile
inputs.file(toolsJarFile)
val outDir = buildDir.resolve(name)
val outDir = layout.buildDirectory.dir(name)
outputs.dir(outDir)
val usedInternalApiPackages = listOf(
@@ -28,7 +32,8 @@ val toolsJarStubs by tasks.registering {
)
doLast {
outDir.deleteRecursively()
val outputDirectoryFile = outDir.get().asFile
outputDirectoryFile.deleteRecursively()
val zipFile = ZipFile(toolsJarFile)
zipFile.stream()
.filter { it.name.endsWith(".class") }
@@ -63,7 +68,7 @@ val toolsJarStubs by tasks.registering {
}, SKIP_CODE)
if (isExported) {
val result = File(outDir, zipEntry.name)
val result = File(outputDirectoryFile, zipEntry.name)
result.parentFile.mkdirs()
result.writeBytes(classWriter.toByteArray())
}