build.gradle.kts は、Gradle のビルド設定を Kotlin で書いたファイルです。 Groovy の build.gradle との違いは「文字列はダブルクォートだけ」「代入は必ず =」「関数呼び出しは必ず ( )」の3つが中心です。書き換えの早見表を先に載せます。

やりたいこと Groovy(build.gradle) Kotlin(build.gradle.kts)
文字列 'abc' か "abc" "abc" だけ
プロパティに代入 group 'com.example' group = "com.example"
依存を足す implementation 'g:a:1.0' implementation("g:a:1.0")
コアプラグイン id 'java' java(`java-library` のようにハイフン入りは ` で囲む)
外部プラグイン id 'org.springframework.boot' version '4.1.1' id("org.springframework.boot") version "4.1.1"
既存タスクの設定 tasks.named('jar') { … } tasks.named<Jar>("jar") { … } か tasks.jar { … }
型でまとめて設定 tasks.withType(JavaCompile) { … } tasks.withType<JavaCompile>().configureEach { … }
タスクを作る tasks.register('hello') { … } tasks.register("hello") { … }
追加プロパティ ext.appEnv = 'dev' val appEnv by extra("dev") か extra["appEnv"] = "dev"
文字列の埋め込み "demo-${version}.jar" "demo-$version.jar"(同じ)

依存のバージョンは gradle/libs.versions.toml(Version Catalog)にまとめ、libs.〜 で参照するのが、Gradle の公式ドキュメントで勧められている書き方です。gradle init で作ったプロジェクトも、この形になっていました。

確認環境:Gradle 8.14.3(同梱の Kotlin 2.0.21)・OpenJDK 21.0.10・Linux で、外部の依存を使わない Java プロジェクトを Groovy 版と Kotlin 版で作り、同じ結果になることと、書き換えの誤りで出るエラー文を確かめました。Gradle の最新版は 9.8.1(2026年10月7日公開、gradle.org のリリース一覧)です。Gradle 9 系の仕様、Spring Boot・Kotlin プラグインの書き方は、Gradle・Spring Boot・kotlinlang.org のドキュメントで確かめました(確認日 2026年10月12日)。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「build.gradle.kts書き方|Groovy対応表とバージョンカタログ」

build.gradle.kts とは

Gradle のビルドスクリプトは、Groovy でも Kotlin でも書けます。Kotlin で書くときはファイル名の最後に .kts(Kotlin Script)を付けます。

ファイル Groovy DSL Kotlin DSL
プロジェクトの設定 build.gradle build.gradle.kts
全体の設定(プロジェクトの一覧など) settings.gradle settings.gradle.kts
バージョンの一覧 gradle/libs.versions.toml(共通) gradle/libs.versions.toml(共通)

gradle init --use-defaults で Java アプリを作ると、Gradle 8.14.3 では build.gradle.kts と settings.gradle.kts ができました。新しいプロジェクトの既定は Kotlin DSL です。

観点 Groovy DSL Kotlin DSL
型 実行するまで分からない コンパイル時に決まる。誤りはスクリプトのコンパイルで止まる
IDE の補完 弱い 強い(型から候補が出る)
初回のビルド 速い ドキュメントでは「初回(クリーンな状態や CI)は Groovy より遅い」
書き方の自由度 括弧・=・引用符を省ける 省けない

Groovy 版と Kotlin 版のファイルは、同じビルドの中に混ぜられます。1ファイルずつ書き換えられます。Maven(pom.xml)の書き方は、関連記事「Mavenコマンド一覧|pom.xml書き方とよく使うオプション」で扱っています。

Groovy と Kotlin を同じ内容で並べる

同じ動きをする2つのファイルを作り、gradle hello run jar を実行しました。どちらも同じ出力と同じ jar になりました。

// build.gradle(Groovy)
plugins {
    id 'application'
}

group 'com.example'
version libs.versions.app.get()

ext {
    appEnv = 'dev'
}
ext.buildBy = 'groovy'

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(21)
    }
}

application {
    mainClass = 'demo.App'
}

tasks.named('run') {
    systemProperty 'app.env', appEnv
}

tasks.named('jar') {
    archiveFileName = "demo-${version}.jar"
    manifest {
        attributes 'Main-Class': 'demo.App', 'Built-By': buildBy
    }
}

tasks.withType(JavaCompile).configureEach {
    options.encoding = 'UTF-8'
}

tasks.register('hello') {
    group = 'demo'
    description = 'あいさつを表示する'
    def v = project.version
    def env = appEnv
    doLast {
        println "hello ${v} env=${env}"
    }
}
// build.gradle.kts(Kotlin)
plugins {
    application
}

group = "com.example"
version = libs.versions.app.get()

val appEnv by extra("dev")
extra["buildBy"] = "kotlin"

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(21)
    }
}

application {
    mainClass = "demo.App"
}

tasks.named<JavaExec>("run") {
    systemProperty("app.env", appEnv)
}

tasks.jar {
    archiveFileName = "demo-$version.jar"
    manifest {
        attributes("Main-Class" to "demo.App", "Built-By" to project.extra["buildBy"])
    }
}

tasks.withType<JavaCompile>().configureEach {
    options.encoding = "UTF-8"
}

tasks.register("hello") {
    group = "demo"
    description = "あいさつを表示する"
    val v = project.version
    val env = appEnv
    doLast {
        println("hello $v env=$env")
    }
}
$ gradle -q hello run jar
hello 1.2.0 env=dev
Hello from dev

$ unzip -p build/libs/demo-1.2.0.jar META-INF/MANIFEST.MF
Manifest-Version: 1.0
Main-Class: demo.App
Built-By: kotlin

tasks.jar { } の中で extra["buildBy"] と書くと、最初は失敗しました。 ブロックの中の extra は「jar タスクの追加プロパティ」を指すためです。プロジェクトのものは project.extra[…] と書きます(エラー文は後述)。

書き換えの対応表(詳しい版)

文字列・代入・関数呼び出し

Groovy Kotlin ポイント
group 'com.example' group = "com.example" 代入は = が必須
version '1.0.0' version = "1.0.0" 同上
description = 'x' description = "x" シングルクォートは文字1つ(Char)の意味になる
println "hi ${v}" println("hi $v") 関数は ( ) が必須
def x = 1 val x = 1(変えるなら var) 変数宣言
[a: 1, b: 2] mapOf("a" to 1, "b" to 2) Map
['a', 'b'] listOf("a", "b") List
minifyEnabled true(Android) isMinifyEnabled = true Android Gradle Plugin のドキュメントの書き方。真偽値は is 付きの名前

Gradle のドキュメントでは、書き換えるときは「まず全部を = の代入として書き、コンパイルエラーになったものを関数呼び出しに直す」順番が勧められています。

plugins

Groovy Kotlin
id 'java' java
id 'java-library' `java-library`
id 'application' application
id 'maven-publish' `maven-publish`
id 'org.jetbrains.kotlin.jvm' version '2.4.21' kotlin("jvm") version "2.4.21"
id 'org.jetbrains.kotlin.plugin.spring' version '2.4.21' kotlin("plugin.spring") version "2.4.21"
alias libs.plugins.spring.boot alias(libs.plugins.spring.boot)
apply plugin: 'java' apply(plugin = "java")(勧められない。下を参照)

plugins { } で入れたプラグインだけ、java { }・application { }・tasks.jar などの書き方(型付きのアクセサ)が使えます。 apply(plugin = "application") で入れると、後の application { } が Unresolved reference になりました。Gradle のドキュメントでも「apply() 関数より plugins {} ブロックを強く勧める」とあります。

dependencies

Groovy Kotlin
implementation 'g:a:1.0' implementation("g:a:1.0")
implementation project(':lib') implementation(project(":lib"))
implementation platform('org.junit:junit-bom:5.13.4') implementation(platform("org.junit:junit-bom:5.13.4"))
implementation('g:a:1.0') { exclude module: 'x' } implementation("g:a:1.0") { exclude(module = "x") }
implementation libs.guava implementation(libs.guava)
implementation files('libs/a.jar') implementation(files("libs/a.jar"))

implementation などの名前は、プラグインが作る「構成(configuration)」です。自分で作った構成は、plugins { } の後で作られるため型付きのアクセサがありません。ドキュメントでは、文字列で "db"("org.postgresql:postgresql") のように書く方法が示されています。

ext と extra(追加プロパティ)

Groovy Kotlin 補足
ext.appEnv = 'dev' val appEnv by extra("dev") 宣言と同時に Kotlin の変数としても使える
ext { appEnv = 'dev' } extra["appEnv"] = "dev" 文字列のキーで入れる
appEnv(読む) val appEnv: String by extra か extra["appEnv"] as String 型を書いて取り出す
rootProject.ext.x rootProject.extra["x"] ルートのものを読む
タスクの中で project.ext.x project.extra["x"] ブロックの中の extra はそのタスクのもの

Groovy の書き方のまま ext.appEnv = "dev" と書くと、Unresolved reference: appEnv で止まりました。ext 自体は Kotlin からも見えますが、その先の名前は型で決まっていないためです。値を一か所にまとめたいだけなら、ext より Version Catalog(後述)か gradle.properties のほうが Kotlin DSL と相性がよいと言えます。

tasks

やりたいこと Groovy Kotlin
test タスクの設定 test { useJUnitPlatform() } tasks.test { useJUnitPlatform() }
名前で取って設定 tasks.named('run') { … } tasks.named<JavaExec>("run") { … }
型でまとめて設定 tasks.withType(Test) { … } tasks.withType<Test>().configureEach { … }
作る tasks.register('hello') { … } tasks.register("hello") { … }
型付きで作る tasks.register('docZip', Zip) { … } tasks.register<Zip>("docZip") { … }
依存関係 dependsOn 'jar' dependsOn("jar") か dependsOn(tasks.jar)
実行時の処理 doLast { … } doLast { … }(同じ)

tasks.named("run") のように型を書かないと、Task として扱われます。 systemProperty のような JavaExec だけの関数は Unresolved reference: systemProperty になりました。タスクの型は gradle help --task run で調べられます(ドキュメントの方法)。

プロパティへの代入(= と .set())

Gradle の新しいプロパティ(Property<T> 型)は、昔は .set() で入れていました。Kotlin DSL のドキュメントでは「= 演算子が set() を呼ぶ好ましい書き方」とされています。

application {
    mainClass.set("demo.App")   // 以前の書き方
    mainClass = "demo.App"      // 今の書き方(同じ意味)
}

上の Kotlin 版のビルドでは、mainClass・archiveFileName・languageVersion を = で書いて、Gradle 8.14.3 で通りました。

Version Catalog(libs.versions.toml)の雛形

gradle/libs.versions.toml を置くと、Gradle が自動で読み込み、libs という名前で使えるようにします。

# gradle/libs.versions.toml
[versions]
kotlin = "2.4.21"
spring-boot = "4.1.1"
spring-dependency-management = "1.1.7"
junit = "5.13.4"
mockk = "1.14.11"

[libraries]
# バージョンを [versions] から参照する
mockk = { module = "io.mockk:mockk", version.ref = "mockk" }
junit-bom = { module = "org.junit:junit-bom", version.ref = "junit" }
# BOM で決まるものはバージョンを書かない
junit-jupiter = { module = "org.junit.jupiter:junit-jupiter" }
junit-platform-launcher = { module = "org.junit.platform:junit-platform-launcher" }

[bundles]
# まとめて足すもの
test-basics = ["junit-jupiter", "mockk"]

[plugins]
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
kotlin-spring = { id = "org.jetbrains.kotlin.plugin.spring", version.ref = "kotlin" }
kotlin-jpa = { id = "org.jetbrains.kotlin.plugin.jpa", version.ref = "kotlin" }
spring-boot = { id = "org.springframework.boot", version.ref = "spring-boot" }
spring-dependency-management = { id = "io.spring.dependency-management", version.ref = "spring-dependency-management" }
セクション 書くもの build.gradle.kts での使い方
[versions] バージョン番号 libs.versions.kotlin.get()
[libraries] 依存の座標 implementation(libs.mockk)
[bundles] 依存のまとまり testImplementation(libs.bundles.test.basics)
[plugins] プラグインの ID と版 alias(libs.plugins.kotlin.jvm)

名前の付け方と変換

別名のハイフン(-)とアンダースコア(_)は、ドット(.)に変わります。 junit-jupiter は libs.junit.jupiter、spring-boot は libs.plugins.spring.boot です。

依存の座標が実際に何になるか、タスクで表示して確かめました。

tasks.register("showLibs") {
    val bom = libs.junit.bom.get().toString()
    val jupiter = libs.junit.jupiter.get().toString()
    val junitVer = libs.versions.junit.get()
    doLast {
        println("bom=$bom")
        println("jupiter=$jupiter")
        println("junit version=$junitVer")
    }
}
bom=org.junit:junit-bom:5.13.4
jupiter=org.junit.jupiter:junit-jupiter
junit version=5.13.4
書き方(libraries) 意味
a = "g:a:1.0" 文字列でまとめて書く
a = { module = "g:a", version = "1.0" } module と version を分ける
a = { group = "g", name = "a", version.ref = "x" } group・name に分け、版は [versions] から
a = { module = "g:a" } 版なし(BOM・platform で決める)
x = { strictly = "[1.0, 2.0[", prefer = "1.2" }(versions) 範囲指定(リッチバージョン)

使えない名前・できないこと

ドキュメントにある制約です。

制約 内容
予約語 extensions・class・convention は別名にできない
先頭の語 依存の別名の最初の部分に bundles・versions・plugins は使えない
settings で使う カタログのプラグインは settings.gradle.kts では使えない
buildSrc 自動では引き継がれない。buildSrc の settings で読み込む
TOML で書けないもの classifier・type = "aar" などの種類・exclude・capabilities
強制力 カタログは「要求する版」を書くだけ。BOM などで別の版が選ばれることがある

予約された先頭語を使った versions-dependency = … を足すと、次のエラーになりました。

Invalid catalog definition:
  - Problem: In version catalog libs, alias 'versions-dependency' is not a valid alias.
    Reason: Prefix for dependency shouldn't be equal to 'versions'.
    Possible solution: Use a different alias which prefix is not equal to 'bundles', 'plugins', or 'versions'.

Kotlin/JVM 用 build.gradle.kts 全文

plugins {
    alias(libs.plugins.kotlin.jvm)
    application
}

group = "com.example"
version = "0.1.0"

repositories {
    mavenCentral()
}

dependencies {
    testImplementation(kotlin("test"))
    testImplementation(platform(libs.junit.bom))
    testImplementation(libs.bundles.test.basics)
    testRuntimeOnly(libs.junit.platform.launcher)
}

kotlin {
    jvmToolchain(21)
}

application {
    mainClass = "com.example.MainKt"
}

tasks.test {
    useJUnitPlatform()
}
行 意味
alias(libs.plugins.kotlin.jvm) Kotlin/JVM のプラグイン。直接書くなら kotlin("jvm") version "2.4.21"
kotlin("test") Kotlin のテスト用ライブラリ。版はプラグインと同じになる
jvmToolchain(21) コンパイルに使う JDK。kotlinlang.org では「Java のコンパイルタスクのツールチェーンも更新する」とある
mainClass = "com.example.MainKt" Main.kt のトップレベルの main は MainKt クラスになる

kotlinlang.org の対応表では、Kotlin Gradle プラグイン 2.4.20〜2.4.21 が対応する Gradle は 7.6.3〜9.7.0 です。MockK の使い方は、関連記事「MockK 使い方|every・verify・coEveryとMockito対応表」で扱っています。

Spring Boot(Kotlin)用 build.gradle.kts 全文

Spring Boot 4.1.1 のドキュメントでは、使える Gradle は「8.x(8.14 以降)と 9.x」、Java は 17 以上です。

plugins {
    alias(libs.plugins.kotlin.jvm)
    alias(libs.plugins.kotlin.spring)
    alias(libs.plugins.kotlin.jpa)
    alias(libs.plugins.spring.boot)
    alias(libs.plugins.spring.dependency.management)
}

group = "com.example"
version = "0.0.1-SNAPSHOT"

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(21)
    }
}

repositories {
    mavenCentral()
}

dependencies {
    // Spring Boot が版を決めるものは、版を書かずに文字列で書く
    implementation("org.springframework.boot:spring-boot-starter-webmvc")
    implementation("org.springframework.boot:spring-boot-starter-data-jpa")
    implementation("org.springframework.boot:spring-boot-starter-validation")
    implementation("tools.jackson.module:jackson-module-kotlin")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    runtimeOnly("com.h2database:h2")

    testImplementation("org.springframework.boot:spring-boot-starter-webmvc-test")
    testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")
    testImplementation(libs.mockk)
    testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}

kotlin {
    compilerOptions {
        freeCompilerArgs.addAll("-Xjsr305=strict")
    }
}

allOpen {
    annotation("jakarta.persistence.Entity")
    annotation("jakarta.persistence.MappedSuperclass")
    annotation("jakarta.persistence.Embeddable")
}

tasks.withType<Test> {
    useJUnitPlatform()
}
ポイント 説明
版を書かない依存 io.spring.dependency-management と Spring Boot のプラグインが、Spring Boot の BOM(版の一覧)で決める
カタログに入れるもの Spring Boot が管理しない依存(MockK など)とプラグイン
allOpen { } kotlin-spring・kotlin-jpa と組み合わせて、エンティティも open にする

kotlin-spring・kotlin-jpa が要る理由と、コードの全体は、関連記事「Spring Boot Kotlin|REST APIの完成コードとJPAの注意点」で扱っています。Spring Boot 4 で変わった依存の名前は、関連記事「Spring Boot starter一覧|用途別の選び方とBoot 4の新旧対応表」で扱っています。

settings.gradle.kts 全文(マルチプロジェクト)

app と lib の2つのサブプロジェクトを持つ構成を作り、gradle :app:run で lib のクラスを呼べることを確かめました。

// settings.gradle.kts
pluginManagement {
    repositories {
        gradlePluginPortal()
        mavenCentral()
    }
}

dependencyResolutionManagement {
    repositoriesMode = RepositoriesMode.FAIL_ON_PROJECT_REPOS
    repositories {
        mavenCentral()
    }
}

rootProject.name = "shop"
include("app", "lib")
// lib/build.gradle.kts
plugins {
    `java-library`
}
// app/build.gradle.kts
plugins {
    application
}

dependencies {
    implementation(project(":lib"))
}

application {
    mainClass = "demo.app.Main"
}
$ gradle -q :app:run
Hi, Gradle
ブロック 役割
pluginManagement { } プラグインをどこから取るか
dependencyResolutionManagement { } 依存をどこから取るかを、全プロジェクト分まとめて決める
repositoriesMode = FAIL_ON_PROJECT_REPOS 各 build.gradle.kts に repositories { } を書いたらエラーにする
rootProject.name ルートプロジェクトの名前
include("app", "lib") サブプロジェクトのディレクトリ

FAIL_ON_PROJECT_REPOS にしたまま app/build.gradle.kts に repositories { mavenCentral() } を足すと、次のエラーで止まりました。

Build was configured to prefer settings repositories over project repositories but repository 'MavenRepo' was added by build file 'app/build.gradle.kts'

libs.versions.toml の場所や名前を変えるときは、settings.gradle.kts で指定します(ドキュメントの例。from は1回・1ファイルだけ)。

dependencyResolutionManagement {
    versionCatalogs {
        create("libs") {
            from(files("../gradle/libs.versions.toml"))
        }
    }
}

よくあるエラーと原因(Gradle 8.14.3 で再現)

上の Kotlin 版のファイルを1か所ずつ Groovy 風に崩して、gradle help を実行しました。

書いたもの エラー文(主な部分) 直し方
group = 'com.example' Too many characters in a character literal ''com.example'' ダブルクォートにする
implementation "g:a:1.0" Unexpected tokens (use ';' to separate expressions on the same line) と Unresolved reference. implementation("g:a:1.0")
ext.appEnv = "dev" Unresolved reference: appEnv val appEnv by extra("dev")
ext { appEnv = "dev" } Unresolved reference: appEnv extra["appEnv"] = "dev"
tasks.named("run") { systemProperty(…) } Unresolved reference: systemProperty tasks.named<JavaExec>("run")
test { useJUnitPlatform() } Expression 'test' cannot be invoked as a function. The function 'invoke()' is not found tasks.test { … }
libs.versions.appp(綴り違い) Unresolved reference: appp toml の別名と合わせる
plugins に java 系が無いまま implementation(…) Unresolved reference: implementation plugins { java } などを足す
apply(plugin = "application") の後に application { } Expression 'application' cannot be invoked as a function. と Unresolved reference: mainClass plugins { application } にする
java { sourceCompatibility = 21 } The integer literal does not conform to the expected type JavaVersion! JavaVersion.VERSION_21、またはツールチェーン
タスクの中で extra["buildBy"] Cannot get property 'buildBy' on extra properties extension as it does not exist project.extra["buildBy"]
val appEnv: String by extra(未定義) Cannot get non-null extra property 'appEnv' as it does not exist 先に by extra("値") で入れる

Unresolved reference は「その名前が型の上で見つからない」という意味です。 原因は大きく3つに分かれます。

  1. プラグインが plugins { } で入っていない(implementation・java・application・tasks.jar など)
  2. 型が分からない形で取り出した(tasks.named("run")・ext.x)
  3. 綴り違い(libs.〜 の別名)

表の上から10行は、スクリプトのコンパイルで止まるエラーです(Script compilation error の後に出ます)。最後の2行は、スクリプトの実行中に止まるエラーで、A problem occurred configuring root project の後に出ます。

エラーにならずに無視された書き方

group "com.example"(= 無し)は、Gradle 8.14.3 ではエラーになりませんでした。 ところが gradle properties で見ると group: は空のままでした。次の行に println("after group: [" + group + "]") を入れても after group: [] と出ました。代入のつもりが何もしていない、気づきにくい誤りです。書き換えたら gradle properties で group・version を確かめると見つけられます。

IDE だけで赤くなるとき

コマンドラインのビルドは通るのに、IDE だけ Unresolved reference になることがあります。Gradle のドキュメントでは、./gradlew tasks を実行して IDE だけの問題かを切り分け、IDE の再起動とキャッシュの削除を試すよう案内されています。型付きのアクセサは Gradle のプロジェクト読み込み(同期)で作られるため、libs.versions.toml を変えた後は同期し直します。

Gradle 9 で変わったこと

項目 Gradle 8.14 Gradle 9.8
同梱の Kotlin 2.0.21(言語版 1.8) 2.4.10(言語版 2.2)

Gradle 9 系を動かすには Java 17〜27 が要ります(互換表の記載)。Gradle のドキュメントでは、Kotlin の互換性を壊す更新は Gradle のメジャー版のときだけ行うとされています。8 から 9 へ上げるときは、スクリプトのコンパイルエラーが新しく出ないかを確かめます。

よくある質問

Q. Groovy の build.gradle から一気に書き換える必要がありますか。 A. Groovy と Kotlin のスクリプトは同じビルドに混ぜられるので、settings.gradle.kts から1ファイルずつ書き換えられます。書き換えたら gradle help(スクリプトのコンパイル)と gradle properties で確かめると、誤りに早く気づけます。

Q. kotlin("jvm") と id("org.jetbrains.kotlin.jvm") の違いは? A. 同じプラグインです。kotlin("jvm") は org.jetbrains.kotlin.jvm を短く書くための Kotlin DSL の関数です。Version Catalog を使うなら alias(libs.plugins.kotlin.jvm) と書きます。

Q. plugins ブロックの version に変数を使えますか。 A. kotlinlang.org では「version はこのブロックの中で文字列リテラルにする」とされています。版を一か所にまとめたいときは、Version Catalog の [plugins] と alias(…) を使います。

Q. ext と gradle.properties と Version Catalog はどう使い分けますか。 A. 依存とプラグインの版は Version Catalog、ビルドの切り替えに使う値(org.gradle.jvmargs やフラグ)は gradle.properties、ビルドの中だけで使う値は by extra が目安です。

Groovy DSL の書き方と依存の種類(api・compileOnly など)は、関連記事「build.gradle書き方|Groovy/Kotlin DSL対訳と依存設定一覧」で扱っています。

まとめ

  • Kotlin DSL は 文字列はダブルクォート、代入は =、関数は ( )
  • プラグインは plugins { } で入れる。apply() だと application { } などが Unresolved reference になった
  • 既存タスクは tasks.named<型>("名前") か tasks.jar・tasks.test。型を書かないと固有の関数が使えない
  • ext は by extra / extra[…]。タスクの中では project.extra[…]
  • 版は gradle/libs.versions.toml にまとめる。ハイフンはドットになり、libs.junit.jupiter で参照できた
  • group "x"(= 無し)は Gradle 8.14.3 でエラーにならず 何もしなかった。gradle properties で確かめる

参考・出典

確認日はいずれも 2026年10月12日です。

  • Gradle User Manual「Migrating build logic from Groovy to Kotlin」:https://docs.gradle.org/current/userguide/migrating_from_groovy_to_kotlin_dsl.html
  • Gradle User Manual「Gradle Kotlin DSL Primer」:https://docs.gradle.org/current/userguide/kotlin_dsl.html
  • Gradle User Manual「Version Catalogs」:https://docs.gradle.org/current/userguide/version_catalogs.html
  • Gradle User Manual「Compatibility Matrix」:https://docs.gradle.org/current/userguide/compatibility.html
  • Gradle リリース一覧:https://gradle.org/releases/
  • Kotlin ドキュメント「Configure a Gradle project」:https://kotlinlang.org/docs/gradle-configure-project.html
  • Spring Boot Gradle Plugin「Getting Started」:https://docs.spring.io/spring-boot/gradle-plugin/getting-started.html
  • Spring Boot「System Requirements」:https://docs.spring.io/spring-boot/system-requirements.html
  • Android Developers「Migrate your build to version catalogs」:https://developer.android.com/build/migrate-to-catalogs

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「build.gradle.kts書き方|Groovy対応表とバージョンカタログ」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?