heihei blog

Blog icon by Unsplash https://unsplash.com/@virussinside

build.gradle + コード補完機能を利用する

GradleでGradle Groovy DSLを用いて依存定義などを行っていると、「コードの補完機能あったらいいな〜」と思ったりします。Gradle Groovy DSLではなく、Kotlin DSLを利用することで、補完機能を利用することができます。

Kotlin DSLを利用して補完機能の恩恵を得るためには既存のbuild.gradleファイルをbuild.gradle.ktsに置き換える必要があると認識していたのですが、実際にはbuild.gradleファイルであっても、buildSrc + import文を利用することで、補完の恩恵を得られると知ったので記載します。

なお、build.gradle.ktsファイルの定義手法は今後主流になっていく可能性もあるため、そういう意味ではこの記事は今後のためになる・有用記事ではないかもしれないですので、そこだけはご注意ください。

buildSrcディレクトリを作成する

手始めにbuldSrcディレクトリを作成します。 プロジェクトのroot配下に buildSrc/を作成します。 例)your-project/buildSrc

Kotlin DSLのセットアップを行う

次に、buildSrcディレクトリ内にbuild.gradle.ktsファイルを配置します。 例)your-project/buildSrc/build.gradle.kts

このktsファイルの中に、Kotlin DSL Pluginの依存を指定します。

plugins {
    `kotlin-dsl`
}

repositories {
    mavenCentral()
}

Dependencies.ktファイルに依存を定義する

次に、Dependencies.ktファイルを作成し、依存を定義します。 例) buildSrc/src/main/kotlin/dependnecies/Dependencies.kt

パッケージ名は dependencies となっているので、.ktファイル内でもそのように指定します。

package dependencies

object Depts {
    private const val VKOTLIN = "1.5.0"
    ...

    const val PLUGIN_KOTLIN = "org.jetbrains.kotlin:kotlin-gradle-plugin:$VKOTLIN"
    ...
}

これで定義まわりは完了です。

定義を利用する

最後にbuild.gradleファイルからこれらの定義を参照します。たとえば以下のように参照することで、Depts.~ の部分について、補完が利用できるようになります。

import dependencies.Depts // import文を追加します

buildscript {
    repositories {
        google()
        mavenCentral()
        ...
    }
    dependencies {
        classpath Depts.PLUGIN_KOTLIN // ここで補完が利用できます
    }
}

ちなみに上記 buildscript を用いた書き方はいまでは古い書き方として扱われているらしいです。 参考: GitHub - Kotlin/kotlinx.serialization: Kotlin multiplatform / multi-format serialization

既存プロジェクトではbuild.gradleばかり使っているよという場合に、自動補完機能をどうしても利用したい!と思った方はぜひ参考にしてみてください。

間違いなどを見つけた方はお手数ですがコメントなどで教えていただけたら嬉しいです!

参考

【Android】buildSrcを使ってライブラリの定義をまとめる | ITcowork Staff Blog