Skip to content

Commit

Permalink
Adding Kotlin compile support (#189)
Browse files Browse the repository at this point in the history
* Adding kotlin support

* Configuring Kotlin spotless

* Configuring Kotlin for all kinds of subprojects

* Configuring Kotlin's apiVersion and using common Android Kotlin config block
  • Loading branch information
LikeTheSalad authored Dec 15, 2023
1 parent 251268e commit 2d65392
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 7 deletions.
3 changes: 3 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
Expand All @@ -16,6 +18,7 @@ plugins {
}

extra["java_version"] = JavaVersion.VERSION_1_8
extra["kotlin_min_supported_version"] = KotlinVersion.KOTLIN_1_6

allprojects {
repositories {
Expand Down
1 change: 1 addition & 0 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,5 @@ dependencies {
implementation(libs.errorprone.plugin)
implementation(libs.nullaway.plugin)
implementation(libs.animalsniffer.plugin)
implementation(libs.kotlin.plugin)
}
12 changes: 11 additions & 1 deletion buildSrc/src/main/kotlin/otel.android-app-conventions.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion

plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("otel.errorprone-conventions")
}

val javaVersion = rootProject.extra["java_version"] as JavaVersion
val minKotlinVersion = rootProject.extra["kotlin_min_supported_version"] as KotlinVersion
android {
namespace = "io.opentelemetry.android"
compileSdk = (property("android.compileSdk") as String).toInt()
Expand All @@ -14,11 +19,16 @@ android {
}

compileOptions {
val javaVersion = rootProject.extra["java_version"] as JavaVersion
sourceCompatibility(javaVersion)
targetCompatibility(javaVersion)
isCoreLibraryDesugaringEnabled = true
}

kotlinOptions {
jvmTarget = javaVersion.toString()
apiVersion = minKotlinVersion.version
languageVersion = minKotlinVersion.version
}
}

val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion

plugins {
id("com.android.library")
id("org.jetbrains.kotlin.android")
id("otel.errorprone-conventions")
}

val javaVersion = rootProject.extra["java_version"] as JavaVersion
val minKotlinVersion = rootProject.extra["kotlin_min_supported_version"] as KotlinVersion
android {
compileSdk = (property("android.compileSdk") as String).toInt()

Expand All @@ -18,11 +23,16 @@ android {
}

compileOptions {
val javaVersion = rootProject.extra["java_version"] as JavaVersion
sourceCompatibility(javaVersion)
targetCompatibility(javaVersion)
isCoreLibraryDesugaringEnabled = true
}

kotlinOptions {
jvmTarget = javaVersion.toString()
apiVersion = minKotlinVersion.version
languageVersion = minKotlinVersion.version
}
}

tasks.withType<Test> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
import ru.vyarus.gradle.plugin.animalsniffer.AnimalSniffer

plugins {
id("java-library")
id("org.jetbrains.kotlin.jvm")
id("otel.errorprone-conventions")
id("ru.vyarus.animalsniffer")
}
Expand All @@ -15,11 +18,19 @@ val otelAndroidExtension =
project.extensions.create("otelAndroid", OtelAndroidExtension::class.java)
otelAndroidExtension.minSdk.convention((project.property("android.minSdk") as String).toInt())

val javaVersion = rootProject.extra["java_version"] as JavaVersion
val minKotlinVersion = rootProject.extra["kotlin_min_supported_version"] as KotlinVersion
java {
val javaVersion = rootProject.extra["java_version"] as JavaVersion
sourceCompatibility = javaVersion
targetCompatibility = javaVersion
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.fromTarget(javaVersion.toString()))
apiVersion.set(minKotlinVersion)
languageVersion.set(minKotlinVersion)
}
}

val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")
dependencies {
Expand Down
20 changes: 16 additions & 4 deletions buildSrc/src/main/kotlin/otel.spotless-conventions.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ extensions.configure<SpotlessExtension>("spotless") {
target("src/**/*.java")
}
plugins.withId("org.jetbrains.kotlin.jvm") {
kotlin {
ktlint()
licenseHeaderFile(rootProject.file("gradle/spotless.license.java"), "(package|import|public)")
}
configureKotlin(this@configure)
}
plugins.withId("org.jetbrains.kotlin.android") {
configureKotlin(this@configure)
}
kotlinGradle {
ktlint()
Expand All @@ -37,3 +37,15 @@ extensions.configure<SpotlessExtension>("spotless") {
endWithNewline()
}
}

fun configureKotlin(
spotlessExtension: SpotlessExtension,
) {
spotlessExtension.kotlin {
ktlint()
licenseHeaderFile(
rootProject.file("gradle/spotless.license.java")
)
target("src/**/*.kt")
}
}
2 changes: 2 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ byteBuddy = "1.14.10"
okhttp = "4.12.0"
spotless = "6.23.3"
zipkin-reporter = "2.17.0"
kotlin = "1.9.21"

[libraries]
opentelemetry-platform = { module = "io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha", version.ref = "opentelemetry-alpha" }
Expand Down Expand Up @@ -55,6 +56,7 @@ nullaway-plugin = "net.ltgt.gradle:gradle-nullaway-plugin:1.6.0"
animalsniffer-plugin = "ru.vyarus:gradle-animalsniffer-plugin:1.7.1"
android-plugin = "com.android.tools.build:gradle:8.2.0"
byteBuddy-plugin = { module = "net.bytebuddy:byte-buddy-gradle-plugin", version.ref = "byteBuddy" }
kotlin-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }

[bundles]
mockito = ["mockito-core", "mockito-junit-jupiter"]
Expand Down

0 comments on commit 2d65392

Please sign in to comment.