🫖
手動で Kotlin Multiplatform を利用した Kotlin の multi project を作成した
概要
本記事では、Kotlin で multi project を作成する際に、Kotlin Multiplatform(KMP)を利用した構成で作成しました。
うまく、Intellij IDEA を利用して作成できなかったため、備忘録としてまとめます。
作成したリポジトリは以下です。
手順
以下の手順で実装できました。
- プロジェクトの新規作成
- version catalog で Kotlin Multiplatform を導入
- settings.gradle.kts に multi project の対象ディレクトリを記述
- multi project にするディレクトリを作成して、build.gradle.kts を作成
- gradle のビルド
プロジェクトの新規作成
プロジェクトを新規作成してください。
multip project にする際には、src/ ディレクトリは不要ですので、削除してください。
version catalog で Kotlin Multiplatform を導入
version catalog で、Kotlin Multiplatform を定義しました。
gradle/libs.versions.toml に以下を記述してください。
gradle/libs.versions.toml
[versions]
kotlin = "1.9.22"
[plugins]
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
その後、build.gradle.kts を下記のように更新します。
build.gradle.kts
// plugins で Kotlin と Kotlin Multiplatform を指定
plugins {
alias(libs.plugins.kotlin.jvm)
alias(libs.plugins.kotlin.multiplatform) apply false
}
settings.gradle.kts に multi project の対象ディレクトリを記述
settings.gradle.kts に multi project 対象のディレクトリを記述します。
本記事では、multi-project/project-a と multi-project/project-b で multi project にするため、以下のように記述します。
settings.gradle.kts
// 以下を追記
include("project-a")
project(":project-a").projectDir = file("multi-project/project-a")
include("project-b")
project(":project-b").projectDir = file("multi-project/project-b")
multi project にするディレクトリを作成して、build.gradle.kts を作成
settings.gradle.kts で指定したディレクトリを作成し、build.gradle.kts を作成します。
以下のように作成します。本記事では、内容は同じです。
multi-project/project-a/build.gradle.kts
@file:Suppress("DSL_SCOPE_VIOLATION")
plugins {
id(libs.plugins.kotlin.multiplatform.get().pluginId)
}
kotlin {
jvm()
}
multi-project/project-b/build.gradle.kts
@file:Suppress("DSL_SCOPE_VIOLATION")
plugins {
id(libs.plugins.kotlin.multiplatform.get().pluginId)
}
kotlin {
jvm()
}
gradle の build
すべての準備を終えたら、gradle を build します。
ビルドが通過したら、Intellij IDEA が以下のようにディレクトリのマークから、package のマークになります。
この状態で、新規ディレクトリの作成(Cmd + N)すると、下記の画像のように補完されます。
あとは通常のプロジェクトのように、ファイルを作成してください。
Discussion