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
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