From dead8958bc34081cbce8704dcc2e83fc72ff1ec6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernd=20Pr=C3=BCnster?= Date: Tue, 4 Jun 2024 16:05:10 +0200 Subject: [PATCH] 20240604+1 --- CHANGELOG.md | 4 ++++ README.md | 4 ++-- gradle.properties | 2 +- k2/build.gradle.kts | 4 +++- .../main/kotlin/at/asitplus/gradle/K2Plugin.kt | 6 ++++++ k2/src/main/resources/k2versions.properties | 2 +- .../main/kotlin/at/asitplus/gradle/Plugin.kt | 17 ++++++++++++++--- 7 files changed, 31 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0da92a2..726324f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Dual-Version Kotlin 1.9.10 / 2.0.0 + +## 20240604+1 +* Fix Kotest multiplatform plugin loading for K2 + ## 20240604 * Fix Kotest version for K2 diff --git a/README.md b/README.md index 1bdb205..63ace90 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # A-SIT Plus Gradle Conventions Plugin -[![Version](https://img.shields.io/badge/Kotlin_1.9.10-+20240604-gray.svg?style=flat&logo=kotlin&labelColor=blue&logoColor=white)](CHANGELOG.md) -[![Version](https://img.shields.io/badge/Kotlin_2.0.0-+20240604-gray.svg?style=flat&logo=kotlin&labelColor=7463ce&logoColor=white)](CHANGELOG.md) +[![Version](https://img.shields.io/badge/Kotlin_1.9.10-+20240604+1-gray.svg?style=flat&logo=kotlin&labelColor=blue&logoColor=white)](CHANGELOG.md) +[![Version](https://img.shields.io/badge/Kotlin_2.0.0-+20240604+1-gray.svg?style=flat&logo=kotlin&labelColor=7463ce&logoColor=white)](CHANGELOG.md) [![GitHub license](https://img.shields.io/badge/license-Apache%20License%202.0-brightgreen.svg?style=flat&)](http://www.apache.org/licenses/LICENSE-2.0) **Note: This plugin is still in its early stages and may not work well for edge cases! diff --git a/gradle.properties b/gradle.properties index bc5a036..f082e19 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -buildDate=20240604 +buildDate=20240604+1 groupId=at.asitplus.gradle diff --git a/k2/build.gradle.kts b/k2/build.gradle.kts index b393947..a483467 100644 --- a/k2/build.gradle.kts +++ b/k2/build.gradle.kts @@ -26,7 +26,9 @@ version = "$kotlinVersion+$buildDate" group = groupId dependencies { - api(project(":legacy")) + api(project(":legacy")){ + exclude(group = "io.kotest", module = "kotest-framework-multiplatform-plugin-gradle") + } api("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion") api("com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin:$ksp") api("io.kotest:kotest-framework-multiplatform-plugin-gradle:$kotest") diff --git a/k2/src/main/kotlin/at/asitplus/gradle/K2Plugin.kt b/k2/src/main/kotlin/at/asitplus/gradle/K2Plugin.kt index 9b51acf..01b68e7 100644 --- a/k2/src/main/kotlin/at/asitplus/gradle/K2Plugin.kt +++ b/k2/src/main/kotlin/at/asitplus/gradle/K2Plugin.kt @@ -1,5 +1,6 @@ package at.asitplus.gradle +import org.gradle.api.Project import org.gradle.kotlin.dsl.invoke import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension @@ -11,7 +12,12 @@ class AspConventions : AspLegacyConventions() { kotlin.runCatching { javaClass.classLoader!!.getResourceAsStream("k2versions.properties").use { aspVersions.versions.load(it) } } + } + + override fun Project.addKotestPlugin(isMultiplatform: Boolean) { + Logger.info("\n Setting up Kotest multiplatform plugin") + plugins.apply("io.kotest.multiplatform") } override fun KotlinMultiplatformExtension.setupKotest() { diff --git a/k2/src/main/resources/k2versions.properties b/k2/src/main/resources/k2versions.properties index fc97fbe..11215f2 100644 --- a/k2/src/main/resources/k2versions.properties +++ b/k2/src/main/resources/k2versions.properties @@ -1,3 +1,3 @@ kotlin=2.0.0 ksp=1.0.21 -kotest=5.9.0 \ No newline at end of file +kotest=5.9.0!! \ No newline at end of file diff --git a/legacy/src/main/kotlin/at/asitplus/gradle/Plugin.kt b/legacy/src/main/kotlin/at/asitplus/gradle/Plugin.kt index be1b20c..4aaf2cc 100644 --- a/legacy/src/main/kotlin/at/asitplus/gradle/Plugin.kt +++ b/legacy/src/main/kotlin/at/asitplus/gradle/Plugin.kt @@ -86,6 +86,15 @@ open class AspLegacyConventions : Plugin { } } + protected open fun Project.addKotestPlugin(isMultiplatform: Boolean) { + if (isMultiplatform) { + afterEvaluate { + Logger.info("\n Setting up Kotest multiplatform plugin") + plugins.apply("io.kotest.multiplatform") + } + } + } + protected open fun versionOverrides(aspVersions: AspVersions) = Unit override fun apply(target: Project) { @@ -189,9 +198,12 @@ open class AspLegacyConventions : Plugin { target.plugins.withType { isMultiplatform = true Logger.lifecycle(" ${H}Multiplatform project detected$R") + } + target.addKotestPlugin(isMultiplatform) - target.afterEvaluate { + target.plugins.withType { + target.afterEvaluate { val kmpTargets = extensions.getByType().targets.filter { it.name != "metadata" } if (kmpTargets.isEmpty()) @@ -204,8 +216,7 @@ open class AspLegacyConventions : Plugin { kmpTargets.forEach { Logger.lifecycle(" * ${it.name}") } - Logger.info("\n Setting up Kotest multiplatform plugin ${AspVersions.kotest}") - plugins.apply("io.kotest.multiplatform") + extensions.getByType().jvm { Logger.info(" Setting jsr305=strict for JVM nullability annotations")