From 59cbd494c9d194a90a9bf51354c269899b374f6e Mon Sep 17 00:00:00 2001 From: Andreas Rossbacher Date: Fri, 23 Jan 2026 13:32:38 -0800 Subject: [PATCH 1/7] Centralize toolchain and target compatibility version. Use 22 for toolchain and 11 for source compatibility. --- build.gradle | 47 +++++++++++++++++++ deeplinkdispatch-base/build.gradle | 10 ---- .../build.gradle.kts | 12 +++-- deeplinkdispatch-processor/build.gradle | 4 -- deeplinkdispatch/build.gradle | 4 -- dependencies.gradle | 4 ++ sample-benchmark/build.gradle | 4 -- sample-benchmarkable-library/build.gradle | 6 --- sample-kapt-library/build.gradle | 4 -- sample-ksp-library/build.gradle | 9 ---- sample-library/build.gradle | 4 -- sample/build.gradle | 4 -- 12 files changed, 60 insertions(+), 52 deletions(-) diff --git a/build.gradle b/build.gradle index c62c644c..299f0a95 100644 --- a/build.gradle +++ b/build.gradle @@ -44,6 +44,53 @@ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { } } +// Apply consistent JVM toolchain and target to all subprojects +subprojects { + afterEvaluate { + def toolchainVersion = rootProject.ext.jvmToolchainVersion + def targetVersion = rootProject.ext.jvmTargetVersion + + // For Kotlin projects (both pure JVM and Android) + if (plugins.hasPlugin('org.jetbrains.kotlin.jvm') || plugins.hasPlugin('kotlin') || + plugins.hasPlugin('kotlin-android') || plugins.hasPlugin('org.jetbrains.kotlin.android')) { + kotlin { + jvmToolchain(toolchainVersion) + } + tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { + compilerOptions { + jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.@Companion.fromTarget(targetVersion.toString()) + } + } + } + // For Java-only projects (without Kotlin) + else if (plugins.hasPlugin('java') && !plugins.hasPlugin('kotlin-dsl')) { + java { + toolchain { + languageVersion = JavaLanguageVersion.of(toolchainVersion) + } + } + } + + // For Android projects, also set compileOptions + if (plugins.hasPlugin('com.android.library') || plugins.hasPlugin('com.android.application')) { + android { + compileOptions { + sourceCompatibility = JavaVersion.toVersion(targetVersion) + targetCompatibility = JavaVersion.toVersion(targetVersion) + } + } + } + + // For pure Java projects + if (plugins.hasPlugin('java') && !plugins.hasPlugin('kotlin-dsl')) { + java { + sourceCompatibility = JavaVersion.toVersion(targetVersion) + targetCompatibility = JavaVersion.toVersion(targetVersion) + } + } + } +} + def getReleaseRepositoryUrl() { return hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL : "https://oss.sonatype.org/service/local/staging/deploy/maven2/" diff --git a/deeplinkdispatch-base/build.gradle b/deeplinkdispatch-base/build.gradle index e2912718..87458e23 100644 --- a/deeplinkdispatch-base/build.gradle +++ b/deeplinkdispatch-base/build.gradle @@ -1,5 +1,3 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - apply plugin: 'java' apply plugin: 'kotlin' apply plugin: 'org.jmailen.kotlinter' @@ -7,10 +5,6 @@ apply plugin: 'org.jmailen.kotlinter' apply plugin: 'checkstyle' apply from: '../publishing.gradle' -kotlin { - jvmToolchain(11) -} - dependencies { implementation deps.okio implementation deps.jsr305 @@ -19,10 +13,6 @@ dependencies { testImplementation deps.assertJ } -kotlin.compilerOptions { - jvmTarget = JvmTarget.JVM_11 -} - checkstyle { configFile = rootProject.file('checkstyle.xml') showViolations = true diff --git a/deeplinkdispatch-gradle-plugin/build.gradle.kts b/deeplinkdispatch-gradle-plugin/build.gradle.kts index 6d427944..dff2f3f6 100644 --- a/deeplinkdispatch-gradle-plugin/build.gradle.kts +++ b/deeplinkdispatch-gradle-plugin/build.gradle.kts @@ -4,6 +4,8 @@ apply(from = "$rootDir/dependencies.gradle") apply(from = "$rootDir/publishing.gradle") val deps: Map by project +val jvmToolchainVersion: Int by rootProject.extra +val jvmTargetVersion: Int by rootProject.extra repositories { google() @@ -17,13 +19,17 @@ plugins { `java-gradle-plugin` } +// JVM toolchain and target - uses central versions from dependencies.gradle java { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + toolchain { + languageVersion.set(JavaLanguageVersion.of(jvmToolchainVersion)) + } + sourceCompatibility = JavaVersion.toVersion(jvmTargetVersion) + targetCompatibility = JavaVersion.toVersion(jvmTargetVersion) } kotlin.compilerOptions { - jvmTarget = JvmTarget.JVM_11 + jvmTarget = JvmTarget.fromTarget(jvmTargetVersion.toString()) } gradlePlugin { diff --git a/deeplinkdispatch-processor/build.gradle b/deeplinkdispatch-processor/build.gradle index 59198022..8d7acafc 100644 --- a/deeplinkdispatch-processor/build.gradle +++ b/deeplinkdispatch-processor/build.gradle @@ -4,10 +4,6 @@ apply plugin: 'org.jmailen.kotlinter' apply plugin: 'checkstyle' apply from: '../publishing.gradle' -kotlin { - jvmToolchain(11) -} - dependencies { implementation project(':deeplinkdispatch-base') implementation deps.jsr305 diff --git a/deeplinkdispatch/build.gradle b/deeplinkdispatch/build.gradle index 3ca0a765..0f01fc34 100644 --- a/deeplinkdispatch/build.gradle +++ b/deeplinkdispatch/build.gradle @@ -36,7 +36,3 @@ android { unitTests.returnDefaultValues = true } } - -kotlin { - jvmToolchain(11) -} diff --git a/dependencies.gradle b/dependencies.gradle index 484210db..7d684a2c 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -35,6 +35,10 @@ ext.androidConfig = [ targetSdkVersion : 35 ] +// Central JVM configuration for all modules +ext.jvmToolchainVersion = 22 // JDK used for compilation +ext.jvmTargetVersion = 11 // Bytecode target (compatibility) + ext.versions = versions ext.deps = [ diff --git a/sample-benchmark/build.gradle b/sample-benchmark/build.gradle index 0f3cd974..1dc26e9d 100644 --- a/sample-benchmark/build.gradle +++ b/sample-benchmark/build.gradle @@ -25,10 +25,6 @@ android { } } -kotlin { - jvmToolchain(11) -} - dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) diff --git a/sample-benchmarkable-library/build.gradle b/sample-benchmarkable-library/build.gradle index 2b1c58c4..56b43874 100644 --- a/sample-benchmarkable-library/build.gradle +++ b/sample-benchmarkable-library/build.gradle @@ -19,12 +19,6 @@ android { } } -java { - toolchain { - languageVersion = JavaLanguageVersion.of(17) - } -} - dependencies { implementation project(':deeplinkdispatch') annotationProcessor project(':deeplinkdispatch-processor') diff --git a/sample-kapt-library/build.gradle b/sample-kapt-library/build.gradle index 60a95825..f6fa40f7 100644 --- a/sample-kapt-library/build.gradle +++ b/sample-kapt-library/build.gradle @@ -26,10 +26,6 @@ android { } } -kotlin { - jvmToolchain(11) -} - dependencies { implementation project(':deeplinkdispatch') kapt project(':deeplinkdispatch-processor') diff --git a/sample-ksp-library/build.gradle b/sample-ksp-library/build.gradle index 2d1a84b3..7ac6e871 100644 --- a/sample-ksp-library/build.gradle +++ b/sample-ksp-library/build.gradle @@ -32,15 +32,6 @@ android { namespace = "com.airbnb.deeplinkdispatch.sampleksplibrary" compileSdk androidConfig.compileSdkVersion - compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 - } - - kotlinOptions { - jvmTarget = '11' - } - defaultConfig { minSdk = androidConfig.minSdkVersion targetSdk = androidConfig.compileSdkVersion diff --git a/sample-library/build.gradle b/sample-library/build.gradle index 9baa5b3a..55eb6ac9 100644 --- a/sample-library/build.gradle +++ b/sample-library/build.gradle @@ -21,10 +21,6 @@ android { } } -kotlin { - jvmToolchain(11) -} - dependencies { implementation project(':deeplinkdispatch') annotationProcessor project(':deeplinkdispatch-processor') diff --git a/sample/build.gradle b/sample/build.gradle index 2ededf80..fa39d648 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -43,10 +43,6 @@ android { } } -kotlin { - jvmToolchain(17) -} - dependencies { implementation project(':deeplinkdispatch') ksp project(':deeplinkdispatch-processor') From ff15180dcc456bfad95ea601b50d4c899cd7b30b Mon Sep 17 00:00:00 2001 From: Andreas Rossbacher Date: Fri, 23 Jan 2026 14:31:56 -0800 Subject: [PATCH 2/7] Add java 22 to gh actions --- .github/workflows/deploy_snapshot.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/deploy_snapshot.yml b/.github/workflows/deploy_snapshot.yml index 0ef95332..3304c077 100644 --- a/.github/workflows/deploy_snapshot.yml +++ b/.github/workflows/deploy_snapshot.yml @@ -14,6 +14,11 @@ jobs: steps: - name: Checkout DeepLinkDispatch uses: actions/checkout@v2 + - name: Set up JDK 22 + uses: [actions/setup-java](https://github.com/actions/setup-java)@v4 + with: + java-version: '22' + distribution: 'coretto' - name: Update gradle.properties uses: DamianReeves/write-file-action@master with: From b65de357cb359553f443ea8c75f57f0c10c27073 Mon Sep 17 00:00:00 2001 From: Andreas Rossbacher Date: Fri, 23 Jan 2026 14:32:58 -0800 Subject: [PATCH 3/7] setup java 22 --- .github/workflows/build_test.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index 15c6d7b1..dac60a1f 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -11,5 +11,10 @@ jobs: steps: - name: Checkout DeepLinkDispatch uses: actions/checkout@v2 + - name: Set up JDK 22 + uses: [actions/setup-java](https://github.com/actions/setup-java)@v4 + with: + java-version: '22' + distribution: 'coretto' - name: Build/Test DeepLinkDispatch - run: ./gradlew assemble check javadoc lintKotlin \ No newline at end of file + run: ./gradlew assemble check javadoc lintKotlin From 0815bbe5aaa450e023e5b19bd078708b20a46097 Mon Sep 17 00:00:00 2001 From: Andreas Rossbacher Date: Fri, 23 Jan 2026 14:57:31 -0800 Subject: [PATCH 4/7] fix yml --- .github/workflows/deploy_snapshot.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy_snapshot.yml b/.github/workflows/deploy_snapshot.yml index 3304c077..a1374549 100644 --- a/.github/workflows/deploy_snapshot.yml +++ b/.github/workflows/deploy_snapshot.yml @@ -15,10 +15,10 @@ jobs: - name: Checkout DeepLinkDispatch uses: actions/checkout@v2 - name: Set up JDK 22 - uses: [actions/setup-java](https://github.com/actions/setup-java)@v4 + uses: actions/setup-java@v5 with: - java-version: '22' distribution: 'coretto' + java-version: '22' - name: Update gradle.properties uses: DamianReeves/write-file-action@master with: From d0753e84c963acfd3e22105cc24d87700262545a Mon Sep 17 00:00:00 2001 From: Andreas Rossbacher Date: Fri, 23 Jan 2026 14:58:02 -0800 Subject: [PATCH 5/7] Fix yml --- .github/workflows/build_test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index dac60a1f..95fca12a 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -12,9 +12,9 @@ jobs: - name: Checkout DeepLinkDispatch uses: actions/checkout@v2 - name: Set up JDK 22 - uses: [actions/setup-java](https://github.com/actions/setup-java)@v4 + uses: actions/setup-java@v5 with: - java-version: '22' distribution: 'coretto' + java-version: '22' - name: Build/Test DeepLinkDispatch run: ./gradlew assemble check javadoc lintKotlin From 7b427381a6e51f2c1523985737552edc678ea97e Mon Sep 17 00:00:00 2001 From: Andreas Rossbacher Date: Fri, 23 Jan 2026 14:59:23 -0800 Subject: [PATCH 6/7] fix dist --- .github/workflows/build_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index 95fca12a..1dbdb403 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -14,7 +14,7 @@ jobs: - name: Set up JDK 22 uses: actions/setup-java@v5 with: - distribution: 'coretto' + distribution: 'corretto' java-version: '22' - name: Build/Test DeepLinkDispatch run: ./gradlew assemble check javadoc lintKotlin From 1746716240399a7ee5c731376e591c37b83b31f4 Mon Sep 17 00:00:00 2001 From: Andreas Rossbacher Date: Fri, 23 Jan 2026 14:59:43 -0800 Subject: [PATCH 7/7] fix dist --- .github/workflows/deploy_snapshot.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy_snapshot.yml b/.github/workflows/deploy_snapshot.yml index a1374549..fc4ed779 100644 --- a/.github/workflows/deploy_snapshot.yml +++ b/.github/workflows/deploy_snapshot.yml @@ -17,7 +17,7 @@ jobs: - name: Set up JDK 22 uses: actions/setup-java@v5 with: - distribution: 'coretto' + distribution: 'corretto' java-version: '22' - name: Update gradle.properties uses: DamianReeves/write-file-action@master