From ddf8ce7029eb97749c684523c297d4c891049038 Mon Sep 17 00:00:00 2001 From: tzugen Date: Mon, 31 Jul 2023 14:46:52 +0200 Subject: [PATCH] Migrate from KAPT to KSP --- build.gradle | 13 ++++++++++- core/domain/build.gradle | 7 ++++-- core/subsonic-api/build.gradle | 4 ++++ gradle/libs.versions.toml | 4 ++++ .../android-module-bootstrap.gradle | 2 +- gradle_scripts/kotlin-module-bootstrap.gradle | 3 +-- ultrasonic/build.gradle | 22 ++++++++++--------- 7 files changed, 39 insertions(+), 16 deletions(-) diff --git a/build.gradle b/build.gradle index d9cf0212..1797e96b 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { apply from: 'gradle/versions.gradle' @@ -10,6 +12,7 @@ buildscript { repositories { google() mavenCentral() + gradlePluginPortal() maven { url "https://plugins.gradle.org/m2/" } } dependencies { @@ -26,21 +29,29 @@ allprojects { buildscript { repositories { mavenCentral() + gradlePluginPortal() google() } } repositories { mavenCentral() + gradlePluginPortal() google() } // Set Kotlin JVM target to the same for all subprojects - tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { + tasks.withType(KotlinCompile).configureEach { kotlinOptions { jvmTarget = "17" } } + + tasks.withType(JavaCompile).tap { + configureEach { + options.compilerArgs.add("-Xlint:deprecation") + } + } } wrapper { diff --git a/core/domain/build.gradle b/core/domain/build.gradle index 75d3d4a5..069c9605 100644 --- a/core/domain/build.gradle +++ b/core/domain/build.gradle @@ -1,11 +1,14 @@ +plugins { + alias libs.plugins.ksp +} + apply from: bootstrap.androidModule -apply plugin: 'kotlin-kapt' dependencies { implementation libs.core implementation libs.roomRuntime implementation libs.roomKtx - kapt libs.room + ksp libs.room } android { diff --git a/core/subsonic-api/build.gradle b/core/subsonic-api/build.gradle index 9f044c21..034da1e2 100644 --- a/core/subsonic-api/build.gradle +++ b/core/subsonic-api/build.gradle @@ -1,3 +1,7 @@ +plugins { + alias libs.plugins.ksp +} + apply from: bootstrap.kotlinModule dependencies { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index daa7e3df..6137c2c9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -17,6 +17,7 @@ constraintLayout = "2.1.4" multidex = "2.0.1" room = "2.5.2" kotlin = "1.8.22" +ksp = "1.8.22-1.0.11" kotlinxCoroutines = "1.7.3" viewModelKtx = "2.6.1" swipeRefresh = "1.1.0" @@ -100,3 +101,6 @@ kluentAndroid = { module = "org.amshove.kluent:kluent-android", versio mockWebServer = { module = "com.squareup.okhttp3:mockwebserver", version.ref = "okhttp" } apacheCodecs = { module = "commons-codec:commons-codec", version.ref = "apacheCodecs" } robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" } + +[plugins] +ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } \ No newline at end of file diff --git a/gradle_scripts/android-module-bootstrap.gradle b/gradle_scripts/android-module-bootstrap.gradle index f84d8fe5..bfa5dac2 100644 --- a/gradle_scripts/android-module-bootstrap.gradle +++ b/gradle_scripts/android-module-bootstrap.gradle @@ -4,7 +4,7 @@ apply plugin: 'com.android.library' apply plugin: 'org.jetbrains.kotlin.android' apply from: "${project.rootDir}/gradle_scripts/code_quality.gradle" -apply plugin: 'org.jetbrains.kotlin.kapt' +apply plugin: 'com.google.devtools.ksp' android { compileSdkVersion versions.compileSdk diff --git a/gradle_scripts/kotlin-module-bootstrap.gradle b/gradle_scripts/kotlin-module-bootstrap.gradle index c71044e9..0a69a824 100644 --- a/gradle_scripts/kotlin-module-bootstrap.gradle +++ b/gradle_scripts/kotlin-module-bootstrap.gradle @@ -2,7 +2,7 @@ * This module provides a base for for pure kotlin modules */ apply plugin: 'kotlin' -apply plugin: 'org.jetbrains.kotlin.kapt' +apply plugin: 'com.google.devtools.ksp' apply from: "${project.rootDir}/gradle_scripts/code_quality.gradle" sourceSets { @@ -12,7 +12,6 @@ sourceSets { test.resources.srcDirs += "${projectDir}/src/integrationTest/resources" } - dependencies { api libs.kotlinStdlib diff --git a/ultrasonic/build.gradle b/ultrasonic/build.gradle index 9787150a..004d151c 100644 --- a/ultrasonic/build.gradle +++ b/ultrasonic/build.gradle @@ -1,6 +1,9 @@ +plugins { + alias libs.plugins.ksp +} + apply plugin: 'com.android.application' apply plugin: 'org.jetbrains.kotlin.android' -apply plugin: 'org.jetbrains.kotlin.kapt' apply plugin: "androidx.navigation.safeargs.kotlin" apply from: "../gradle_scripts/code_quality.gradle" @@ -64,20 +67,20 @@ android { targetCompatibility JavaVersion.VERSION_17 } - kapt { - arguments { - arg("room.schemaLocation", "$rootDir/ultrasonic/schemas".toString()) - } + ksp { + arg("room.schemaLocation", "$rootDir/ultrasonic/schemas") } lint { baseline = file("lint-baseline.xml") abortOnError true warningsAsErrors true - disable 'IconMissingDensityFolder', 'VectorPath' - ignore 'MissingTranslation', 'UnusedQuantity', 'MissingQuantity' warning 'ImpliedQuantity' + disable 'IconMissingDensityFolder', 'VectorPath' + disable 'MissingTranslation', 'UnusedQuantity', 'MissingQuantity' disable 'ObsoleteLintCustomCheck' + // We manage dependencies on Gitlab with RenovateBot + disable 'GradleDependency' textReport true checkDependencies true } @@ -85,7 +88,7 @@ android { } -tasks.withType(Test) { +tasks.withType(Test).configureEach { useJUnitPlatform() } @@ -129,7 +132,7 @@ dependencies { implementation libs.rxAndroid implementation libs.multiType - kapt libs.room + ksp libs.room testImplementation libs.kotlinReflect testImplementation libs.junit @@ -141,6 +144,5 @@ dependencies { testImplementation libs.robolectric implementation libs.timber - }