diff options
author | Yahor Berdnikau <ky4ep9ibbiu@gmail.com> | 2022-04-06 14:48:51 +0300 |
---|---|---|
committer | mvicsokolova <maria.sokolova@jetbrains.com> | 2022-06-15 19:14:25 +0300 |
commit | de4a1a3a91624d17ca6596198b077d25b1e91481 (patch) | |
tree | 0d8974663f59a1f9a48de341e413752b56bf3d98 | |
parent | a6104229b3f94af0998efbe8659ad56889f2d866 (diff) | |
download | kotlinx.atomicfu-de4a1a3a91624d17ca6596198b077d25b1e91481.tar.gz |
Fix kotlin 1.7 compatibility (#222)
* Update Gradle plugin dependencies configuration
Exclude dependencies provided by Gradle via runtime.
* Fix Gradle plugin compatibility with Kotlin 1.7.0 release
Backward compatability should also work.
-rw-r--r-- | atomicfu-gradle-plugin/build.gradle | 16 | ||||
-rw-r--r-- | atomicfu-gradle-plugin/src/main/kotlin/kotlinx/atomicfu/plugin/gradle/AtomicFUGradlePlugin.kt | 19 |
2 files changed, 26 insertions, 9 deletions
diff --git a/atomicfu-gradle-plugin/build.gradle b/atomicfu-gradle-plugin/build.gradle index 79ba241..c80dd0d 100644 --- a/atomicfu-gradle-plugin/build.gradle +++ b/atomicfu-gradle-plugin/build.gradle @@ -20,18 +20,20 @@ kotlin.sourceSets.all { } dependencies { - compile gradleApi() - compile project(":atomicfu-transformer") - compile 'org.jetbrains.kotlin:kotlin-stdlib' + implementation(project(":atomicfu-transformer")) { + exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib' + } + compileOnly gradleApi() + compileOnly 'org.jetbrains.kotlin:kotlin-stdlib' compileOnly "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // atomicfu compiler plugin dependency will be loaded to kotlinCompilerPluginClasspath implementation "org.jetbrains.kotlin:atomicfu:$kotlin_version" - testCompile gradleTestKit() - testCompile 'org.jetbrains.kotlin:kotlin-test' - testCompile 'org.jetbrains.kotlin:kotlin-test-junit' - testCompile 'junit:junit:4.12' + testImplementation gradleTestKit() + testImplementation 'org.jetbrains.kotlin:kotlin-test' + testImplementation 'org.jetbrains.kotlin:kotlin-test-junit' + testImplementation 'junit:junit:4.12' } configurations { diff --git a/atomicfu-gradle-plugin/src/main/kotlin/kotlinx/atomicfu/plugin/gradle/AtomicFUGradlePlugin.kt b/atomicfu-gradle-plugin/src/main/kotlin/kotlinx/atomicfu/plugin/gradle/AtomicFUGradlePlugin.kt index fe887c4..40c3410 100644 --- a/atomicfu-gradle-plugin/src/main/kotlin/kotlinx/atomicfu/plugin/gradle/AtomicFUGradlePlugin.kt +++ b/atomicfu-gradle-plugin/src/main/kotlin/kotlinx/atomicfu/plugin/gradle/AtomicFUGradlePlugin.kt @@ -21,6 +21,7 @@ import java.util.concurrent.* import org.jetbrains.kotlin.gradle.targets.js.* import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget import org.jetbrains.kotlinx.atomicfu.gradle.* +import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompileTool private const val EXTENSION_NAME = "atomicfu" private const val ORIGINAL_DIR_NAME = "originalClassesDir" @@ -257,8 +258,22 @@ private fun Project.configureTransformationForTarget(target: KotlinTarget) { Callable { originalDirsByCompilation[mainCompilation]!! } ) - (tasks.findByName(compilation.compileKotlinTaskName) as? AbstractCompile)?.classpath = - originalMainClassesDirs + compilation.compileDependencyFiles - mainCompilation.output.classesDirs + // KGP >= 1.7.0 has breaking changes in task hierarchy: + // https://youtrack.jetbrains.com/issue/KT-32805#focus=Comments-27-5915479.0-0 + val (majorVersion, minorVersion) = getKotlinPluginVersion() + .split('.') + .take(2) + .map { it.toInt() } + if (majorVersion == 1 && minorVersion < 7) { + (tasks.findByName(compilation.compileKotlinTaskName) as? AbstractCompile)?.classpath = + originalMainClassesDirs + compilation.compileDependencyFiles - mainCompilation.output.classesDirs + } else { + (tasks.findByName(compilation.compileKotlinTaskName) as? AbstractKotlinCompileTool<*>) + ?.libraries + ?.setFrom( + originalMainClassesDirs + compilation.compileDependencyFiles - mainCompilation.output.classesDirs + ) + } (tasks.findByName("${target.name}${compilation.name.capitalize()}") as? Test)?.classpath = originalMainClassesDirs + (compilation as KotlinCompilationToRunnableFiles).runtimeDependencyFiles - mainCompilation.output.classesDirs |