From 21e8852e0fb04d66f313881dff7e10278037735e Mon Sep 17 00:00:00 2001 From: AdoptOSS Date: Mon, 5 Apr 2021 22:35:38 +0800 Subject: [PATCH] buildscript: fix task not found errors when android sdk not available (#1161) * buildscript: fix task not found errors when android sdk not available * fix: this shadowed by run * cleanup: code style * improve: avoid breaking index map --- .../kotlin/analyzes/CompiledCodeVerify.kt | 16 ++++++++++---- mirai-core-api/build.gradle.kts | 22 ++++++++++--------- mirai-core-utils/build.gradle.kts | 22 ++++++++++--------- mirai-core/build.gradle.kts | 22 ++++++++++--------- 4 files changed, 48 insertions(+), 34 deletions(-) diff --git a/buildSrc/src/main/kotlin/analyzes/CompiledCodeVerify.kt b/buildSrc/src/main/kotlin/analyzes/CompiledCodeVerify.kt index ed9eb770a..b40d14f4c 100644 --- a/buildSrc/src/main/kotlin/analyzes/CompiledCodeVerify.kt +++ b/buildSrc/src/main/kotlin/analyzes/CompiledCodeVerify.kt @@ -42,12 +42,14 @@ object CompiledCodeVerify { sequenceOf("kotlin/main") }.map { sequenceOf(project.buildDir.resolve("classes").resolve(it)) } - private fun getLibraries(project: Project, info: ProjectInfo): Sequence> = + private fun getLibraries(project: Project, info: ProjectInfo): Sequence?> = if (info.isMpp) { sequenceOf("jvmCompileClasspath", "androidCompileClasspath") } else { sequenceOf("compileClasspath") - }.map { project.configurations.getByName(it).files.asSequence() } + }.map { + project.configurations.findByName(it)?.files?.asSequence() + } fun Project.registerVerifyTask(taskName: String, action: VerifyAction) { @@ -55,12 +57,18 @@ object CompiledCodeVerify { tasks.register(taskName) { group = VERIFICATION_GROUP_NAME - mustRunAfter(*projectInfo.compileTasks) + projectInfo.compileTasks.forEach { + tasks.findByPath(it)?.also { compileTask -> + mustRunAfter(compileTask) + } + } doFirst { getCompiledClassesPath(project, projectInfo).zip(getLibraries(project, projectInfo)) .forEach { (compiledClasses, libraries) -> - action(compiledClasses, libraries) + if (libraries != null) { + action(compiledClasses, libraries) + } } } } diff --git a/mirai-core-api/build.gradle.kts b/mirai-core-api/build.gradle.kts index 5959feda1..80b5447bc 100644 --- a/mirai-core-api/build.gradle.kts +++ b/mirai-core-api/build.gradle.kts @@ -101,18 +101,20 @@ kotlin { } } -tasks.register("checkAndroidApiLevel") { - doFirst { - analyzes.AndroidApiLevelCheck.check( - buildDir.resolve("classes/kotlin/android/main"), - project.property("mirai.android.target.api.level")!!.toString().toInt(), - project - ) +if (isAndroidSDKAvailable) { + tasks.register("checkAndroidApiLevel") { + doFirst { + analyzes.AndroidApiLevelCheck.check( + buildDir.resolve("classes/kotlin/android/main"), + project.property("mirai.android.target.api.level")!!.toString().toInt(), + project + ) + } + group = "verification" + this.mustRunAfter("androidMainClasses") } - group = "verification" - this.mustRunAfter("androidMainClasses") + tasks.getByName("androidTest").dependsOn("checkAndroidApiLevel") } -tasks.getByName("androidTest").dependsOn("checkAndroidApiLevel") fun org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler.implementation1(dependencyNotation: String) = implementation(dependencyNotation) { diff --git a/mirai-core-utils/build.gradle.kts b/mirai-core-utils/build.gradle.kts index 647f696c8..a13f9aea1 100644 --- a/mirai-core-utils/build.gradle.kts +++ b/mirai-core-utils/build.gradle.kts @@ -89,18 +89,20 @@ kotlin { } } -tasks.register("checkAndroidApiLevel") { - doFirst { - analyzes.AndroidApiLevelCheck.check( - buildDir.resolve("classes/kotlin/android/main"), - project.property("mirai.android.target.api.level")!!.toString().toInt(), - project - ) +if (isAndroidSDKAvailable) { + tasks.register("checkAndroidApiLevel") { + doFirst { + analyzes.AndroidApiLevelCheck.check( + buildDir.resolve("classes/kotlin/android/main"), + project.property("mirai.android.target.api.level")!!.toString().toInt(), + project + ) + } + group = "verification" + this.mustRunAfter("androidMainClasses") } - group = "verification" - this.mustRunAfter("androidMainClasses") + tasks.getByName("androidTest").dependsOn("checkAndroidApiLevel") } -tasks.getByName("androidTest").dependsOn("checkAndroidApiLevel") fun org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler.implementation1(dependencyNotation: String) = implementation(dependencyNotation) { diff --git a/mirai-core/build.gradle.kts b/mirai-core/build.gradle.kts index bc9aec17e..73f690045 100644 --- a/mirai-core/build.gradle.kts +++ b/mirai-core/build.gradle.kts @@ -114,18 +114,20 @@ kotlin { } } -tasks.register("checkAndroidApiLevel") { - doFirst { - analyzes.AndroidApiLevelCheck.check( - buildDir.resolve("classes/kotlin/android/main"), - project.property("mirai.android.target.api.level")!!.toString().toInt(), - project - ) +if (isAndroidSDKAvailable) { + tasks.register("checkAndroidApiLevel") { + doFirst { + analyzes.AndroidApiLevelCheck.check( + buildDir.resolve("classes/kotlin/android/main"), + project.property("mirai.android.target.api.level")!!.toString().toInt(), + project + ) + } + group = "verification" + this.mustRunAfter("androidMainClasses") } - group = "verification" - this.mustRunAfter("androidMainClasses") + tasks.getByName("androidTest").dependsOn("checkAndroidApiLevel") } -tasks.getByName("androidTest").dependsOn("checkAndroidApiLevel") fun org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler.implementation1(dependencyNotation: String) = implementation(dependencyNotation) {