aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYahor Berdnikau <ky4ep9ibbiu@gmail.com>2022-04-06 14:48:51 +0300
committermvicsokolova <maria.sokolova@jetbrains.com>2022-06-15 19:14:25 +0300
commitde4a1a3a91624d17ca6596198b077d25b1e91481 (patch)
tree0d8974663f59a1f9a48de341e413752b56bf3d98
parenta6104229b3f94af0998efbe8659ad56889f2d866 (diff)
downloadkotlinx.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.gradle16
-rw-r--r--atomicfu-gradle-plugin/src/main/kotlin/kotlinx/atomicfu/plugin/gradle/AtomicFUGradlePlugin.kt19
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