diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts index 8fe7dd0bcfdf..24cd8f0a5a14 100644 --- a/build-logic/build.gradle.kts +++ b/build-logic/build.gradle.kts @@ -34,6 +34,7 @@ dependencies { implementation(libs.gradlePlugin.graalvm) implementation(libs.gradlePlugin.ksp) implementation(libs.gradlePlugin.mrjar) + implementation(libs.gradlePlugin.tapmoc) implementation(libs.androidx.lint.gradle) implementation(libs.kotlin.gradle.plugin.api) } diff --git a/build-logic/src/main/kotlin/okhttp.jvm-conventions.gradle.kts b/build-logic/src/main/kotlin/okhttp.jvm-conventions.gradle.kts index fc903a06f63b..6138b8f833fd 100644 --- a/build-logic/src/main/kotlin/okhttp.jvm-conventions.gradle.kts +++ b/build-logic/src/main/kotlin/okhttp.jvm-conventions.gradle.kts @@ -1,11 +1,11 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.tasks.KotlinCompile -import kotlinx.validation.ApiValidationExtension -import org.gradle.api.artifacts.VersionCatalogsExtension -import okhttp3.buildsupport.testJavaVersion +import tapmoc.TapmocExtension +import tapmoc.configureKotlinCompatibility plugins { id("okhttp.base-conventions") + id("com.gradleup.tapmoc") } val libs = extensions.getByType().named("libs") @@ -21,6 +21,11 @@ extensions.configure { } } +// Introduce in a separate change +//configureJavaCompatibility(javaVersion = 8) + +configureKotlinCompatibility(version = version("kotlinCoreLibrariesVersion")) + tasks.withType { options.encoding = Charsets.UTF_8.toString() if (name.contains("Java9")) { @@ -41,3 +46,8 @@ tasks.withType { ) } } + +extensions.configure { + // Fail the build if any api dependency exposes incompatible Kotlin metadata, Kotlin stdlib, or Java bytecode version. + checkDependencies() +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 159bf3d89ae7..61530fc2127c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -64,6 +64,10 @@ startup-runtime = "1.2.0" testcontainers = "1.21.4" zstd-kmp-okio = "0.4.0" +# Set to lower version than KGP version to maximize compatibility +# Default to matching okio +kotlinCoreLibrariesVersion = "2.1.21" + [libraries] amazon-corretto = { module = "software.amazon.cryptools:AmazonCorrettoCryptoProvider", version.ref = "amazon-corretto" } androidx-activity = { module = "androidx.activity:activity-ktx", version.ref = "androidx-activity" } @@ -151,6 +155,7 @@ gradlePlugin-mavenPublish = { module = "com.vanniktech:gradle-maven-publish-plug gradlePlugin-mrjar = { module = "me.champeau.mrjar:me.champeau.mrjar.gradle.plugin", version.ref = "mrjar" } gradlePlugin-shadow = { module = "com.gradleup.shadow:shadow-gradle-plugin", version.ref = "shadow-plugin" } gradlePlugin-spotless = { module = "com.diffplug.spotless:spotless-plugin-gradle", version.ref = "spotless-plugin" } +gradlePlugin-tapmoc = { module = "com.gradleup.tapmoc:com.gradleup.tapmoc.gradle.plugin", version = "0.4.0"} [plugins] android-application = { id = "com.android.application", version.ref = "agp" }