Gradleプロジェクトの構成
GradleでKotlinプロジェクトを構築するには、ビルドスクリプトファイルbuild.gradle(.kts)
にKotlin Gradle pluginを追加し、そこでプロジェクトの依存関係を構成する必要があります。
ビルドスクリプトの内容について詳しくは、 ビルドスクリプトを調べるセクションをご覧ください。
プラグインの適用
Kotlin Gradle pluginを適用するには、Gradle plugins DSLのplugins{}
ブロックを使用します。
- Kotlin
- Groovy
plugins {
// ターゲット環境に適したプラグイン名で`<...>`を置き換えてください
kotlin("<...>") version "2.1.20"
// たとえば、ターゲット環境がJVMの場合:
// kotlin("jvm") version "2.1.20"
}
plugins {
// ターゲット環境に適したプラグイン名で`<...>`を置き換えてください
id 'org.jetbrains.kotlin.<...>' version '2.1.20'
// たとえば、ターゲット環境がJVMの場合:
// id 'org.jetbrains.kotlin.jvm' version '2.1.20'
}
Kotlin Gradle plugin (KGP) とKotlinは、同じバージョン番号を共有します。
プロジェクトを構成する際は、Kotlin Gradle plugin (KGP) と利用可能なGradleバージョンとの互換性を確認してください。 次の表に、GradleとAndroid Gradle plugin (AGP) の最小バージョンと最大完全サポートバージョンを示します。
KGP version | Gradle min and max versions | AGP min and max versions |
---|---|---|
2.1.20 | 7.6.3–8.11 | 7.3.1–8.7.2 |
2.1.0–2.1.10 | 7.6.3–8.10* | 7.3.1–8.7.2 |
2.0.20–2.0.21 | 6.8.3–8.8* | 7.1.3–8.5 |
2.0.0 | 6.8.3–8.5 | 7.1.3–8.3.1 |
1.9.20–1.9.25 | 6.8.3–8.1.1 | 4.2.2–8.1.0 |
1.9.0–1.9.10 | 6.8.3–7.6.0 | 4.2.2–7.4.0 |
1.8.20–1.8.22 | 6.8.3–7.6.0 | 4.1.3–7.4.0 |
1.8.0–1.8.11 | 6.8.3–7.3.3 | 4.1.3–7.2.1 |
1.7.20–1.7.22 | 6.7.1–7.1.1 | 3.6.4–7.0.4 |
1.7.0–1.7.10 | 6.7.1–7.0.2 | 3.4.3–7.0.2 |
1.6.20–1.6.21 | 6.1.1–7.0.2 | 3.4.3–7.0.2 |
*Kotlin 2.0.20–2.0.21およびKotlin 2.1.0–2.1.10は、Gradle 8.6まで完全に互換性があります。
Gradleバージョン8.7〜8.10もサポートされていますが、例外が1つあります。Kotlin Multiplatform Gradle pluginを使用している場合、
JVMターゲットでwithJava()
関数を呼び出すマルチプラットフォームプロジェクトに非推奨の警告が表示されることがあります。
詳細については、デフォルトで作成されるJavaソースセットをご覧ください。
また、GradleとAGPのバージョンを最新リリースまで使用することもできますが、その場合は、 非推奨の警告が表示されたり、一部の新機能が動作しない可能性があることに注意してください。
たとえば、Kotlin Gradle pluginとkotlin-multiplatform
plugin 2.1.20では、プロジェクトのコンパイルに最低限Gradle
バージョン7.6.3が必要です。
同様に、完全にサポートされている最大バージョンは8.11です。非推奨のGradle メソッドやプロパティはなく、現在のGradleのすべての機能をサポートしています。
プロジェクト内のKotlin Gradle pluginデータ
デフォルトでは、Kotlin Gradle pluginは、プロジェクト固有の永続的なデータをプロジェクトのルートにある.kotlin
ディレクトリに保存します。
.kotlin
ディレクトリをバージョン管理にコミットしないでください。
たとえば、Gitを使用している場合は、.kotlin
をプロジェクトの.gitignore
ファイルに追加します。
この動作を構成するために、プロジェクトのgradle.properties
ファイルに追加できるプロパティがあります。
Gradle property | Description |
---|---|
kotlin.project.persistent.dir | プロジェクトレベルのデータの保存場所を構成します。デフォルト:<project-root-directory>/.kotlin |
kotlin.project.persistent.dir.gradle.disableWrite | Kotlinデータの.gradle ディレクトリへの書き込みを無効にするかどうかを制御します(古いIDEAバージョンとの下位互換性のため)。デフォルト:false |
JVMをターゲットにする
JVMをターゲットにするには、Kotlin JVM pluginを適用します。
- Kotlin
- Groovy
plugins {
kotlin("jvm") version "2.1.20"
}
plugins {
id "org.jetbrains.kotlin.jvm" version "2.1.20"
}
version
は、このブロックではリテラルである必要があり、別のビルドスクリプトから適用することはできません。
KotlinとJavaのソース
KotlinソースとJavaソースは、同じディレクトリに格納することも、異なるディレクトリに配置することもできます。
デフォルトの規則では、異なるディレクトリを使用します。
project
- src
- main (root)
- kotlin
- java
Javaの.java
ファイルをsrc/*/kotlin
ディレクトリに格納しないでください。.java
ファイルはコンパイルされません。
代わりに、src/main/java
を使用できます。
デフォルトの規則を使用していない場合は、対応するsourceSets
プロパティを更新する必要があります。
- Kotlin
- Groovy
sourceSets.main {
java.srcDirs("src/main/myJava", "src/main/myKotlin")
}
sourceSets {
main.kotlin.srcDirs += 'src/main/myKotlin'
main.java.srcDirs += 'src/main/myJava'
}
関連するコンパイルタスクのJVMターゲットの互換性を確認する
ビルドモジュールには、次のような関連するコンパイルタスクがある場合があります。
compileKotlin
とcompileJava
compileTestKotlin
とcompileTestJava
main
およびtest
ソースセットのコンパイルタスクは関連していません。
このような関連タスクの場合、Kotlin Gradle pluginはJVMターゲットの互換性をチェックします。kotlin
拡張機能またはタスクのjvmTarget
属性と、java
拡張機能またはタスクのtargetCompatibility
の値が異なると、JVMターゲットの非互換が発生します。例:
compileKotlin
タスクのjvmTarget=1.8
で、
compileJava
タスクが(または継承)targetCompatibility=15
の場合。
build.gradle(.kts)
ファイルのkotlin.jvm.target.validation.mode
プロパティを設定して、プロジェクト全体のこのチェックの動作を構成します。
error
– pluginはビルドを失敗させます。Gradle 8.0以降のプロジェクトのデフォルト値です。warning
– pluginは警告メッセージを出力します。Gradle 8.0より前のプロジェクトのデフォルト値です。ignore
– pluginはチェックをスキップし、メッセージを生成しません。
build.gradle(.kts)
ファイルのタスクレベルで構成することもできます。
- Kotlin
- Groovy
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile>().configureEach {
jvmTargetValidationMode.set(org.jetbrains.kotlin.gradle.dsl.jvm.JvmTargetValidationMode.WARNING)
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile.class).configureEach {
jvmTargetValidationMode = org.jetbrains.kotlin.gradle.dsl.jvm.JvmTargetValidationMode.WARNING
}
JVMターゲットの非互換性を回避するには、ツールチェーンを構成するか、JVMバージョンを手動で調整してください。
ターゲットに互換性がない場合に何が問題になる可能性があるか
KotlinおよびJavaソースセットのJVMターゲットを手動で設定する方法は2つあります。
- Javaツールチェーンの設定による暗黙的な方法。
kotlin
拡張機能またはタスクでjvmTarget
属性を、java
拡張機能またはタスクでtargetCompatibility
を明示的に設定する方法。
JVMターゲットの非互換性は、次の場合に発生します。
jvmTarget
とtargetCompatibility
の異なる値を明示的に設定した場合。- デフォルト構成があり、JDKが
1.8
と等しくない場合。
ビルドスクリプトにKotlin JVM pluginのみがあり、JVMターゲットに追加の設定がない場合のJVMターゲットのデフォルト構成を検討してみましょう。
- Kotlin
- Groovy
plugins {
kotlin("jvm") version "2.1.20"
}
plugins {
id "org.jetbrains.kotlin.jvm" version "2.1.20"
}
ビルドスクリプトにjvmTarget
値に関する明示的な情報がない場合、そのデフォルト値はnull
であり、コンパイラはそれをデフォルト値1.8
に変換します。targetCompatibility
は、現在のGradleのJDKバージョンと等しく、これはJDKバージョンと等しくなります(Javaツールチェーンのアプローチを使用しない限り)。JDKバージョンが17
であると仮定すると、公開されたライブラリアーティファクトは、JDK 17+との互換性を宣言します:org.gradle.jvm.version=17
、これは間違っています。この場合、メインプロジェクトでJava 17を使用してこのライブラリを追加する必要があります。ただし、バイトコードのバージョンは1.8
です。ツールチェーンを構成して、この問題を解決します。
Gradle Java toolchains support
Androidユーザーへの警告。Gradle toolchain supportを使用するには、Android Gradle plugin (AGP) バージョン8.1.0-alpha09以降を使用してください。
Gradle Java toolchain supportは、AGP 7.4.0以降で利用可能です。
ただし、この問題のため、AGPはバージョン8.1.0-alpha09までtoolchainのJDKと等しくなるようにtargetCompatibility
を設定しませんでした。
8.1.0-alpha09より前のバージョンを使用する場合は、compileOptions
を使用してtargetCompatibility
を手動で構成する必要があります。
プレースホルダー<MAJOR_JDK_VERSION>
を使用するJDKバージョンに置き換えます。
android {
compileOptions {
sourceCompatibility = <MAJOR_JDK_VERSION>
targetCompatibility = <MAJOR_JDK_VERSION>
}
}
Gradle 6.7はJava toolchains supportを導入しました。 この機能を使用すると、次のことができます。
- コンパイル、テスト、および実行可能ファイルを実行するために、Gradleとは異なるJDKおよびJREを使用します。
- まだリリースされていない言語バージョンでコードをコンパイルおよびテストします。
toolchains supportを使用すると、GradleはローカルJDKを自動検出し、Gradleがビルドに必要な不足しているJDKをインストールできます。 これで、Gradle自体は任意のJDKで実行でき、メジャーJDKバージョンに依存するタスクのリモートビルドキャッシュ機能を再利用できます。
Kotlin Gradle pluginは、Kotlin/JVMコンパイルタスクのJava toolchainsをサポートしています。JSおよびNativeタスクはtoolchainsを使用しません。 Kotlinコンパイラは常にGradleデーモンが実行されているJDKで実行されます。 Java toolchain:
- JVMターゲットで使用できる
-jdk-home
オプションを設定します。 - ユーザーが
jvmTarget
オプションを明示的に設定しない場合、compilerOptions.jvmTarget
をtoolchainのJDKバージョンに設定します。 ユーザーがtoolchainを構成しない場合、jvmTarget
フィールドはデフォルト値を使用します。 JVMターゲットの互換性の詳細をご覧ください。 - すべてのJavaコンパイル、テスト、およびjavadocタスクで使用されるtoolchainを設定します。
- どのJDK
kapt
ワーカーが実行されているかに影響します。
次のコードを使用してtoolchainを設定します。プレースホルダー<MAJOR_JDK_VERSION>
を使用するJDKバージョンに置き換えます。
- Kotlin
- Groovy
kotlin {
jvmToolchain {
languageVersion.set(JavaLanguageVersion.of(<MAJOR_JDK_VERSION>))
}
// またはより短く:
jvmToolchain(<MAJOR_JDK_VERSION>)
// 例:
jvmToolchain(17)
}
kotlin {
jvmToolchain {
languageVersion = JavaLanguageVersion.of(<MAJOR_JDK_VERSION>)
}
// またはより短く:
jvmToolchain(<MAJOR_JDK_VERSION>)
// 例:
jvmToolchain(17)
}
kotlin
拡張機能を介してtoolchainを設定すると、Javaコンパイルタスクのtoolchainも更新されることに注意してください。
java
拡張機能を介してtoolchainを設定でき、Kotlinコンパイルタスクはそれを使用します。
- Kotlin
- Groovy
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(<MAJOR_JDK_VERSION>))
}
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(<MAJOR_JDK_VERSION>)
}
}
Gradle 8.0.2以降を使用する場合は、toolchain resolver pluginも追加する必要があります。
このタイプのpluginは、toolchainをダウンロードするリポジトリを管理します。例として、settings.gradle(.kts)
に次のpluginを追加します。
- Kotlin
- Groovy
plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version("0.9.0")
}
plugins {
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.9.0'
}
foojay-resolver-convention
のバージョンがGradleサイトのGradleバージョンに対応していることを確認してください。
Gradleがどのtoolchainを使用しているかを理解するには、ログレベル--info
でGradleビルドを実行します。
出力に[KOTLIN] Kotlin compilation 'jdkHome' argument:
で始まる文字列を見つけます。
コロンの後の部分は、toolchainからのJDKバージョンになります。
特定のタスクに任意のJDK(ローカルも含む)を設定するには、Task DSLを使用します。
Kotlin pluginでのGradle JVM toolchain supportの詳細をご覧ください。
Task DSLを使用してJDKバージョンを設定する
Task DSLを使用すると、UsesKotlinJavaToolchain
インターフェースを実装する任意のタスクのJDKバージョンを設定できます。
現時点では、これらのタスクはKotlinCompile
とKaptTask
です。
GradleにメジャーJDKバージョンを検索させる場合は、ビルドスクリプトの<MAJOR_JDK_VERSION>
プレースホルダーを置き換えます。
- Kotlin
- Groovy
val service = project.extensions.getByType<JavaToolchainService>()
val customLauncher = service.launcherFor {
languageVersion.set(JavaLanguageVersion.of(<MAJOR_JDK_VERSION>))
}
project.tasks.withType<UsesKotlinJavaToolchain>().configureEach {
kotlinJavaToolchain.toolchain.use(customLauncher)
}
JavaToolchainService service = project.getExtensions().getByType(JavaToolchainService.class)
Provider<JavaLauncher> customLauncher = service.launcherFor {
it.languageVersion = JavaLanguageVersion.of(<MAJOR_JDK_VERSION>)
}
tasks.withType(UsesKotlinJavaToolchain::class).configureEach { task `->`
task.kotlinJavaToolchain.toolchain.use(customLauncher)
}
または、ローカルJDKへのパスを指定し、プレースホルダー<LOCAL_JDK_VERSION>
をこのJDKバージョンに置き換えることができます。
tasks.withType<UsesKotlinJavaToolchain>().configureEach {
kotlinJavaToolchain.jdk.use(
"/path/to/local/jdk", // JDKへのパスを入れます
JavaVersion.<LOCAL_JDK_VERSION> // たとえば、JavaVersion.17
)
}
コンパイラタスクを関連付ける
コンパイルを_関連付ける_には、一方のコンパイルが他方のコンパイルのコンパイル済み出力を使用するような関係を設定します。コンパイルを関連付けると、コンパイル間にinternal
可視性が確立されます。
Kotlinコンパイラは、各ターゲットのtest
コンパイルとmain
コンパイルなど、一部のコンパイルをデフォルトで関連付けます。
カスタムコンパイルの1つが別のコンパイルに接続されていることを表現する必要がある場合は、独自の関連コンパイルを作成します。
ソースセット間の可視性を推測するために、IDEが関連付けられたコンパイルをサポートするようにするには、次のコードを
build.gradle(.kts)
に追加します。
- Kotlin
- Groovy
val integrationTestCompilation = kotlin.target.compilations.create("integrationTest") {
associateWith(kotlin.target.compilations.getByName("main"))
}
integrationTestCompilation {
kotlin.target.compilations.create("integrationTest") {
associateWith(kotlin.target.compilations.getByName("main"))
}
}
ここでは、integrationTest
コンパイルはmain
コンパイルに関連付けられており、機能テストからinternal
オブジェクトへのアクセスを提供します。
Java Modules (JPMS)を有効にして構成する
Kotlin Gradle pluginがJava Modulesで動作するようにするには、
ビルドスクリプトに次の行を追加し、YOUR_MODULE_NAME
をJPMSモジュールへの参照(たとえば、
org.company.module
)に置き換えます。
- Kotlin
- Groovy
// Gradleバージョン7.0未満を使用する場合は、次の3行を追加します
java {
modularity.inferModulePath.set(true)
}
tasks.named("compileJava", JavaCompile::class.java) {
options.compilerArgumentProviders.add(CommandLineArgumentProvider {
// javacにコンパイル済みのKotlinクラスを提供します – Java/Kotlin混合ソースが動作するために必要です
listOf("--patch-module", "YOUR_MODULE_NAME=${sourceSets["main"].output.asPath}")
})
}
// Gradleバージョン7.0未満を使用する場合は、次の3行を追加します
java {
modularity.inferModulePath = true
}
tasks.named("compileJava", JavaCompile.class) {
options.compilerArgumentProviders.add(new CommandLineArgumentProvider() {
@Override
Iterable<String> asArguments() {
// javacにコンパイル済みのKotlinクラスを提供します – Java/Kotlin混合ソースが動作するために必要です
return ["--patch-module", "YOUR_MODULE_NAME=${sourceSets["main"].output.asPath}"]
}
})
}
通常どおり、module-info.java
をsrc/main/java
ディレクトリに配置します。
モジュールの場合、Kotlinファイルのパッケージ名は、module-info.java
のパッケージ名と一致している必要があります。そうでない場合、
「パッケージが空であるか存在しません」というビルドエラーが発生します。
詳細については、以下をご覧ください。
その他の詳細
Kotlin/JVMの詳細をご覧ください。
コンパイルタスクでのアーティファクトの使用を無効にする
まれなシナリオでは、循環依存関係エラーが原因でビルドが失敗する可能性があります。たとえば、1つのコンパイルが別のコンパイルのすべての内部宣言を表示でき、生成されたアーティファクト が両方のコンパイルタスクの出力に依存している場合などです。
FAILURE: Build failed with an exception.
What went wrong:
Circular dependency between the following tasks:
:lib:compileKotlinJvm
--- :lib:jvmJar
\--- :lib:compileKotlinJvm (*)
(*) - details omitted (listed previously)
この循環依存関係エラーを修正するために、GradleプロパティarchivesTaskOutputAsFriendModule
を追加しました。
このプロパティは、コンパイルタスクでのアーティファクト入力の使用を制御し、タスクの依存関係が結果として作成されるかどうかを決定します。
デフォルトでは、このプロパティはタスクの依存関係を追跡するためにtrue
に設定されています。循環依存関係エラーが発生した場合は、
コンパイルタスクでのアーティファクトの使用を無効にして、タスクの依存関係を削除し、循環
依存関係エラーを回避できます。
コンパイルタスクでのアーティファクトの使用を無効にするには、gradle.properties
ファイルに以下を追加します。
kotlin.build.archivesTaskOutputAsFriendModule=false
遅延Kotlin/JVMタスクの作成
Kotlin 1.8.20以降、Kotlin Gradle pluginはすべてのタスクを登録し、ドライランでは構成しません。
コンパイルタスクのdestinationDirectoryのデフォルト以外の場所
Kotlin/JVM KotlinJvmCompile
/KotlinCompile
タスクのdestinationDirectory
の場所をオーバーライドする場合は、
ビルドスクリプトを更新してください。sourceSets.main.kotlin.classesDirectories
をJARファイルのsourceSets.main.outputs
に明示的に追加する必要があります。
tasks.jar(type: Jar) {
from sourceSets.main.outputs
from sourceSets.main.kotlin.classesDirectories
}
複数のプラットフォームをターゲットにする
複数のプラットフォームをターゲットとするプロジェクト(マルチプラットフォームプロジェクトと呼ばれる)では、kotlin-multiplatform
pluginが必要です。
kotlin-multiplatform
pluginは、Gradle 7.6.3以降で動作します。
- Kotlin
- Groovy
plugins {
kotlin("multiplatform") version "2.1.20"
}
plugins {
id 'org.jetbrains.kotlin.multiplatform' version '2.1.20'
}
さまざまなプラットフォーム向けのKotlin Multiplatformと、 iOSおよびAndroid向けのKotlin Multiplatformの詳細をご覧ください。
Androidをターゲットにする
Androidアプリケーションの作成には、Android Studioを使用することをお勧めします。Android Gradle pluginの使用方法をご覧ください。
JavaScriptをターゲットにする
JavaScriptをターゲットにする場合は、kotlin-multiplatform
pluginも使用します。Kotlin/JSプロジェクトの設定の詳細をご覧ください
- Kotlin
- Groovy
plugins {
kotlin("multiplatform") version "2.1.20"
}
plugins {
id 'org.jetbrains.kotlin.multiplatform' version '2.1.20'
}
JavaScriptのKotlinとJavaのソース
このpluginはKotlinファイルのみで動作するため、KotlinファイルとJavaファイルは分離しておくことをお勧めします(プロジェクトにJavaファイルが含まれている場合)。分離して格納しない場合は、sourceSets{}
ブロックでソースフォルダーを指定します。
- Kotlin
- Groovy
kotlin {
sourceSets["main"].apply {
kotlin.srcDir("src/main/myKotlin")
}
}
kotlin {
sourceSets {
main.kotlin.srcDirs += 'src/main/myKotlin'
}
}
KotlinBasePluginインターフェースを使用した構成アクションのトリガー
Kotlin Gradle plugin(JVM、JS、Multiplatform、Nativeなど)が適用されるたびに、何らかの構成アクションをトリガーするには、すべてのKotlin pluginが継承するKotlinBasePlugin
インターフェースを使用します。
- Kotlin
- Groovy
import org.jetbrains.kotlin.gradle.plugin.KotlinBasePlugin
// ...
project.plugins.withType<KotlinBasePlugin>() {
// ここでアクションを構成します
}
import org.jetbrains.kotlin.gradle.plugin.KotlinBasePlugin
// ...
project.plugins.withType(KotlinBasePlugin.class) {
// ここでアクションを構成します
}
依存関係の構成
ライブラリへの依存関係を追加するには、ソースセットDSLのdependencies{}
ブロックに必要なタイプ(たとえば、implementation
)の依存関係を設定します。
- Kotlin
- Groovy
kotlin {
sourceSets {
commonMain.dependencies {
implementation("com.example:my-library:1.0")
}
}
}
kotlin {
sourceSets {
commonMain {
dependencies {
implementation 'com.example:my-library:1.0'
}
}
}
}
または、トップレベルで依存関係を設定することもできます。
依存関係のタイプ
要件に基づいて依存関係のタイプを選択します。
Type | Description | When to use |
---|---|---|
| コンパイル時と実行時の両方で使用され、ライブラリの利用者にエクスポートされます。 | 依存関係の型が現在のモジュールのパブリックAPIで使用されている場合は、 |
| 現在のモジュールのコンパイル時と実行時に使用されますが、 | モジュールの内部ロジックに必要な依存関係に使用します。 モジュールが公開されていないエンドポイントアプリケーションである場合は、 |
| 現在のモジュールのコンパイルに使用され、実行時や他のモジュールのコンパイル時には使用できません。 | 実行時にサードパーティの実装が利用可能なAPIに使用します。 |
| 実行時に使用できますが、モジュールのコンパイル時には表示されません。 |
標準ライブラリへの依存関係
標準ライブラリ(stdlib
)への依存関係は、各ソースセットに自動的に追加されます。使用される標準ライブラリのバージョンは、Kotlin Gradle pluginのバージョンと同じです。
プラットフォーム固有のソースセットの場合、ライブラリの対応するプラットフォーム固有のバリアントが使用されますが、共通の標準
ライブラリは残りの部分に追加されます。Kotlin Gradle pluginは、Gradleビルドスクリプトの
compilerOptions.jvmTarget
コンパイラオプションに応じて、適切なJVM標準ライブラリを選択します。
標準ライブラリの依存関係を明示的に宣言した場合(たとえば、異なるバージョンが必要な場合)、Kotlin Gradle pluginはそれをオーバーライドしたり、2番目の標準ライブラリを追加したりしません。
標準ライブラリがまったく必要ない場合は、次のGradleプロパティをgradle.properties
ファイルに追加できます。
kotlin.stdlib.default.dependency=false
推移的な依存関係のバージョンアライメント
Kotlin標準ライブラリバージョン1.9.20以降、Gradleは標準ライブラリに含まれるメタデータを使用して、推移的なkotlin-stdlib-jdk7
およびkotlin-stdlib-jdk8
依存関係を自動的に
調整します。
Kotlin標準ライブラリのバージョン1.8.0〜1.9.10の依存関係を追加する場合は、たとえば、implementation("org.jetbrains.kotlin:kotlin-stdlib:1.8.0")
の場合、Kotlin Gradle Pluginは、このKotlinバージョンを
推移的なkotlin-stdlib-jdk7
およびkotlin-stdlib-jdk8
依存関係に使用します。これにより、異なる標準ライブラリバージョンからのクラスの重複を回避できます。[kotlin-stdlib-jdk7
と`kotlin-stdlib-jdk