Official Gradle plugin for the Kotlin programming language that provides comprehensive build support for Kotlin projects including compilation, multiplatform development, Android integration, and native development capabilities
npx @tessl/cli install tessl/maven-org-jetbrains-kotlin--kotlin-gradle-plugin@2.2.0The Kotlin Gradle Plugin is the official build system integration for the Kotlin programming language ecosystem, providing comprehensive compilation and project management capabilities for Kotlin projects across multiple platforms including JVM, Android, JavaScript, Native, and Multiplatform development.
id("org.jetbrains.kotlin.jvm") version "2.2.0" (or other platform variants)// JVM projects
plugins {
id("org.jetbrains.kotlin.jvm") version "2.2.0"
}
// Multiplatform projects
plugins {
id("org.jetbrains.kotlin.multiplatform") version "2.2.0"
}
// Android projects
plugins {
id("org.jetbrains.kotlin.android") version "2.2.0"
}
// JavaScript projects
plugins {
id("org.jetbrains.kotlin.js") version "2.2.0"
}// JVM project with Kotlin DSL
plugins {
id("org.jetbrains.kotlin.jvm") version "2.2.0"
}
kotlin {
jvmTarget = "11"
compilerOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
}
}
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib")
testImplementation("org.jetbrains.kotlin:kotlin-test")
}// Multiplatform project
plugins {
id("org.jetbrains.kotlin.multiplatform") version "2.2.0"
}
kotlin {
jvm()
js(IR) {
browser()
nodejs()
}
sourceSets {
commonMain {
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib-common")
}
}
jvmMain {
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
}
}
}
}The Kotlin Gradle Plugin provides a layered architecture:
Core plugin application and project structure setup for different Kotlin project types.
// Plugin application patterns
id("org.jetbrains.kotlin.jvm") version "2.2.0"
id("org.jetbrains.kotlin.multiplatform") version "2.2.0"
id("org.jetbrains.kotlin.android") version "2.2.0"
id("org.jetbrains.kotlin.js") version "2.2.0"Type-safe DSL for configuring Kotlin projects, compiler options, and build settings.
kotlin {
jvmTarget: String
compilerOptions: KotlinJvmCompilerOptions.() -> Unit
sourceSets: NamedDomainObjectContainer<KotlinSourceSet>
}Gradle tasks that handle Kotlin compilation, including incremental compilation and compiler options.
tasks.withType<KotlinCompile> {
compilerOptions: KotlinJvmCompilerOptions
destinationDirectory: DirectoryProperty
classpath: ConfigurableFileCollection
}Configuration and management of multiple platform targets in Kotlin Multiplatform projects.
kotlin {
jvm(): KotlinJvmTarget
js(compiler: KotlinJsCompilerType): KotlinJsTarget
iosX64(): KotlinNativeTarget
sourceSets: KotlinSourceSetContainer
}Integration with Gradle's dependency resolution and Maven publishing for Kotlin artifacts.
dependencies {
implementation(dependencyNotation: Any)
api(dependencyNotation: Any)
compileOnly(dependencyNotation: Any)
}Specialized support for Kotlin/JS and Kotlin/Wasm compilation with Node.js and browser targets.
kotlin {
js(IR) {
browser(): KotlinJsBrowserDsl
nodejs(): KotlinJsNodeDsl
}
wasmJs(): KotlinWasmJsTarget
}interface KotlinProjectExtension {
val sourceSets: NamedDomainObjectContainer<KotlinSourceSet>
}
interface KotlinMultiplatformExtension : KotlinProjectExtension {
fun jvm(name: String = "jvm", configure: KotlinJvmTarget.() -> Unit = {}): KotlinJvmTarget
fun js(name: String = "js", configure: KotlinJsTarget.() -> Unit = {}): KotlinJsTarget
fun android(configure: KotlinAndroidTarget.() -> Unit = {}): KotlinAndroidTarget
}
interface KotlinCompilerOptions<T : KotlinCommonCompilerOptions> {
val languageVersion: Property<KotlinVersion>
val apiVersion: Property<KotlinVersion>
val freeCompilerArgs: ListProperty<String>
}
abstract class KotlinCompile : AbstractCompile(), KotlinCompilationTask<KotlinJvmCompilerOptions> {
abstract override val compilerOptions: KotlinJvmCompilerOptions
}