Skip to content

Commit e4d539e

Browse files
authored
Merge pull request #731 from android/av/adjust-jdk
Adjust JDK setup to remove toolchain
2 parents 5f49c6a + 76b0b08 commit e4d539e

File tree

6 files changed

+70
-35
lines changed

6 files changed

+70
-35
lines changed

build-logic/convention/build.gradle.kts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,15 @@ plugins {
2222

2323
group = "com.google.samples.apps.nowinandroid.buildlogic"
2424

25+
// Configure the build-logic plugins to target JDK 17
26+
// This matches the JDK used to build the project, and is not related to what is running on device.
2527
java {
26-
// Up to Java 11 APIs are available through desugaring
27-
// https://developer.android.com/studio/write/java11-minimal-support-table
28-
sourceCompatibility = JavaVersion.VERSION_11
29-
targetCompatibility = JavaVersion.VERSION_11
28+
sourceCompatibility = JavaVersion.VERSION_17
29+
targetCompatibility = JavaVersion.VERSION_17
3030
}
31-
3231
tasks.withType<KotlinCompile>().configureEach {
3332
kotlinOptions {
34-
jvmTarget = JavaVersion.VERSION_11.toString()
33+
jvmTarget = JavaVersion.VERSION_17.toString()
3534
}
3635
}
3736

@@ -93,5 +92,9 @@ gradlePlugin {
9392
id = "nowinandroid.android.application.flavors"
9493
implementationClass = "AndroidApplicationFlavorsConventionPlugin"
9594
}
95+
register("jvmLibrary") {
96+
id = "nowinandroid.jvm.library"
97+
implementationClass = "JvmLibraryConventionPlugin"
98+
}
9699
}
97100
}

build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import com.android.build.api.dsl.ApplicationExtension
1818
import com.google.samples.apps.nowinandroid.configureGradleManagedDevices
1919
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
2020
import com.google.samples.apps.nowinandroid.configureKotlinAndroid
21-
import com.google.samples.apps.nowinandroid.configureKotlinAndroidToolchain
2221
import com.google.samples.apps.nowinandroid.configurePrintApksTask
2322
import org.gradle.api.Plugin
2423
import org.gradle.api.Project
@@ -32,7 +31,6 @@ class AndroidApplicationConventionPlugin : Plugin<Project> {
3231
apply("org.jetbrains.kotlin.android")
3332
}
3433

35-
configureKotlinAndroidToolchain()
3634
extensions.configure<ApplicationExtension> {
3735
configureKotlinAndroid(this)
3836
defaultConfig.targetSdk = 33

build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import com.android.build.gradle.LibraryExtension
1919
import com.google.samples.apps.nowinandroid.configureFlavors
2020
import com.google.samples.apps.nowinandroid.configureGradleManagedDevices
2121
import com.google.samples.apps.nowinandroid.configureKotlinAndroid
22-
import com.google.samples.apps.nowinandroid.configureKotlinAndroidToolchain
2322
import com.google.samples.apps.nowinandroid.configurePrintApksTask
2423
import com.google.samples.apps.nowinandroid.disableUnnecessaryAndroidTests
2524
import org.gradle.api.Plugin
@@ -38,7 +37,6 @@ class AndroidLibraryConventionPlugin : Plugin<Project> {
3837
apply("org.jetbrains.kotlin.android")
3938
}
4039

41-
configureKotlinAndroidToolchain()
4240
extensions.configure<LibraryExtension> {
4341
configureKotlinAndroid(this)
4442
defaultConfig.targetSdk = 33
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* Copyright 2023 The Android Open Source Project
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
import com.google.samples.apps.nowinandroid.configureKotlinJvm
18+
import org.gradle.api.Plugin
19+
import org.gradle.api.Project
20+
21+
class JvmLibraryConventionPlugin : Plugin<Project> {
22+
override fun apply(target: Project) {
23+
with(target) {
24+
with(pluginManager) {
25+
apply("org.jetbrains.kotlin.jvm")
26+
}
27+
configureKotlinJvm()
28+
}
29+
}
30+
}

build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,13 @@
1616

1717
package com.google.samples.apps.nowinandroid
1818

19+
import com.android.build.api.dsl.ApplicationExtension
1920
import com.android.build.api.dsl.CommonExtension
2021
import org.gradle.api.JavaVersion
2122
import org.gradle.api.Project
2223
import org.gradle.api.artifacts.VersionCatalogsExtension
2324
import org.gradle.api.plugins.ExtensionAware
25+
import org.gradle.api.plugins.JavaPluginExtension
2426
import org.gradle.kotlin.dsl.configure
2527
import org.gradle.kotlin.dsl.dependencies
2628
import org.gradle.kotlin.dsl.getByType
@@ -52,6 +54,33 @@ internal fun Project.configureKotlinAndroid(
5254
}
5355
}
5456

57+
configureKotlin()
58+
59+
val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")
60+
61+
dependencies {
62+
add("coreLibraryDesugaring", libs.findLibrary("android.desugarJdkLibs").get())
63+
}
64+
}
65+
66+
/**
67+
* Configure base Kotlin options for JVM (non-Android)
68+
*/
69+
internal fun Project.configureKotlinJvm() {
70+
extensions.configure<JavaPluginExtension> {
71+
// Up to Java 11 APIs are available through desugaring
72+
// https://developer.android.com/studio/write/java11-minimal-support-table
73+
sourceCompatibility = JavaVersion.VERSION_11
74+
targetCompatibility = JavaVersion.VERSION_11
75+
}
76+
77+
configureKotlin()
78+
}
79+
80+
/**
81+
* Configure base Kotlin options
82+
*/
83+
private fun Project.configureKotlin() {
5584
// Use withType to workaround https://youtrack.jetbrains.com/issue/KT-55947
5685
tasks.withType<KotlinCompile>().configureEach {
5786
kotlinOptions {
@@ -69,23 +98,4 @@ internal fun Project.configureKotlinAndroid(
6998
)
7099
}
71100
}
72-
73-
val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")
74-
75-
dependencies {
76-
add("coreLibraryDesugaring", libs.findLibrary("android.desugarJdkLibs").get())
77-
}
78-
}
79-
80-
fun CommonExtension<*, *, *, *>.kotlinOptions(block: KotlinJvmOptions.() -> Unit) {
81-
(this as ExtensionAware).extensions.configure("kotlinOptions", block)
82-
}
83-
84-
/**
85-
* Configure Kotlin's jvm toolchain for Android projects
86-
*/
87-
internal fun Project.configureKotlinAndroidToolchain() {
88-
extensions.configure<KotlinAndroidProjectExtension> {
89-
jvmToolchain(11)
90-
}
91101
}

core/model/build.gradle.kts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,9 @@
1515
*/
1616

1717
plugins {
18-
id("kotlin")
19-
}
20-
21-
kotlin {
22-
jvmToolchain(11)
18+
id("nowinandroid.jvm.library")
2319
}
2420

2521
dependencies {
2622
implementation(libs.kotlinx.datetime)
27-
}
23+
}

0 commit comments

Comments
 (0)