初めてのkotlin

kotlinによるAndroidアプリ開発での気付き

バージョンカタログの導入 IntelliJ IDEA

私はマルチプロジェクトをやりたかっただけなのですが、 そのやり方を検索していると決まってバージョンカタログの話が出るので、 どうせplugin内のバージョン指定で変数が使えず不便だったので、 ついでにやっちゃえって思ったらハマったので、 どうやって実現したかを書いておきます。

まずはバージョンカタログを使えるようにします。 と言うか、正確にはデフォルトで使えるようにはなっているのですが、 settings.gradle.ktsをいじらないと名前解決のエラーでbuild.gradle.ktsの構文解析ができなくなるので、 その対策をします。

settings.gradle.kts

pluginManagement {
    repositories {
        mavenCentral()
        gradlePluginPortal()
    }
}
dependencyResolutionManagement {
    versionCatalogs {
        create("libs") {
        }
    }
}

plugins {
    id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
}

rootProject.name = "HelloWorld"

create("libs") {}の1行のために、3日も費やしてしまいました.˚‧º·(°இωஇ°)‧º·˚.

次にバージョンカタログファイルを作ります(サンプル)。

gradle/libs.versions.toml

[versions]
kotlin = "2.0.0"
ktor = "2.3.12"

[libraries]
ktor-client = { module = "io.ktor:ktor-client", version.ref = "ktor" }

[plugins]
kotlinJvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }

この例だと、 kotlinJvmと言うエイリアスでkotlin.jvmのバージョンを2.0.0に指定しますと言う意味になります。

そして最後に、build.gradle.ktsでエイリアスを使った指定を行いますが、 バージョンカタログの内容を反映させるために、 一旦プロジェクトを読み込み直してから編集してください。

build.gradle.kts

plugins {
//    kotlin("jvm") version "2.0.0"
    alias(libs.plugins.kotlinJvm)
}

group = "com.exsample"
version = "1.0-SNAPSHOT"

dependencies {
  implementation(libs.ktor.client)
}

バージョンカタログでエイリアス名にハイフンを使った時は、gradle内で使う時はドットに変換して指定してください。

この例では、ktor-clientで定義したものをlibs.ktor.clientで指定しています。

IntelliJ IDEA 2024.1.4 Community Edition、Gradle 8.5で確認しました。