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
—
This document covers the core plugin application patterns and entry points for different types of Kotlin projects.
For standard Kotlin/JVM projects targeting the Java Virtual Machine.
plugins {
id("org.jetbrains.kotlin.jvm") version "2.2.0"
}Usage Example:
plugins {
id("org.jetbrains.kotlin.jvm") version "2.2.0"
id("application")
}
application {
mainClass.set("com.example.MainKt")
}
kotlin {
jvmTarget = "11"
}For Kotlin Multiplatform projects targeting multiple platforms.
plugins {
id("org.jetbrains.kotlin.multiplatform") version "2.2.0"
}Usage Example:
plugins {
id("org.jetbrains.kotlin.multiplatform") version "2.2.0"
}
kotlin {
jvm()
js(IR) {
browser()
}
iosX64()
iosArm64()
}For Kotlin/Android projects, used alongside the Android Gradle Plugin.
plugins {
id("com.android.application") // or com.android.library
id("org.jetbrains.kotlin.android") version "2.2.0"
}Usage Example:
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android") version "2.2.0"
}
android {
compileSdk = 34
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
}
kotlin {
jvmTarget = "11"
}For Kotlin/JS projects targeting JavaScript runtimes.
plugins {
id("org.jetbrains.kotlin.js") version "2.2.0"
}Usage Example:
plugins {
id("org.jetbrains.kotlin.js") version "2.2.0"
}
kotlin {
js(IR) {
browser {
webpackTask {
outputFileName = "app.js"
}
}
}
}For annotation processing in Kotlin projects.
plugins {
id("org.jetbrains.kotlin.kapt") version "2.2.0"
}Usage Example:
plugins {
id("org.jetbrains.kotlin.jvm") version "2.2.0"
id("org.jetbrains.kotlin.kapt") version "2.2.0"
}
dependencies {
kapt("com.google.dagger:dagger-compiler:2.48")
implementation("com.google.dagger:dagger:2.48")
}For Android Parcelable generation.
plugins {
id("org.jetbrains.kotlin.plugin.parcelize") version "2.2.0"
}For making classes open for frameworks like Spring.
plugins {
id("org.jetbrains.kotlin.plugin.allopen") version "2.2.0"
}
allOpen {
annotation("org.springframework.stereotype.Component")
}For generating no-argument constructors.
plugins {
id("org.jetbrains.kotlin.plugin.noarg") version "2.2.0"
}
noArg {
annotation("jakarta.persistence.Entity")
}For Kotlin scripting support.
plugins {
id("org.jetbrains.kotlin.plugin.scripting") version "2.2.0"
}The actual plugin implementation classes (for advanced usage or plugin development).
// Main plugin wrappers
class KotlinPluginWrapper : AbstractKotlinPluginWrapper()
class KotlinMultiplatformPluginWrapper : AbstractKotlinMultiplatformPluginWrapper()
class KotlinAndroidPluginWrapper : AbstractKotlinAndroidPluginWrapper()
class KotlinJsPluginWrapper : AbstractKotlinJsPluginWrapper()
// Base plugin classes
abstract class KotlinBasePluginWrapper : Plugin<Project>
abstract class AbstractKotlinPluginWrapper : KotlinBasePluginWrapper()
abstract class AbstractKotlinMultiplatformPluginWrapper : KotlinBasePluginWrapper()const val KOTLIN_DSL_NAME = "kotlin"
const val KOTLIN_OPTIONS_DSL_NAME = "kotlinOptions"
const val KOTLIN_PROJECT_EXTENSION_NAME = "kotlin"The plugin version should match or be compatible with the Kotlin compiler version being used:
// Plugin version matches Kotlin version
plugins {
id("org.jetbrains.kotlin.jvm") version "2.2.0"
}
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib:2.2.0")
}Install with Tessl CLI
npx tessl i tessl/maven-org-jetbrains-kotlin--kotlin-gradle-plugin