Dev Study
← Spring コース

31. Gradle: build.gradle を1行ずつ読む

は、 と同じことを XML ではなくスクリプトで書いたファイルです。雛形は28行で、上から plugins(使う部品)、 と version()、 の (使う Java の版)、(取得元)、(依存)、test の設定の6つです。場所は の規約を借り、手順はが足すので、どちらも書きません。

依存の行で読むのは座標の前の語です。 はコンパイルと実行に、testImplementation はテストのコンパイルと実行に、 はテストの実行だけに使う区分で、 は と呼びます。Maven のに当たります。版が無いのは の を取り込む行があるからで、その行を消すと解決は FAILED になりました。

書き方は2つあります。 と はスクリプトの言語の名前で、Gradle が受け付けるのはこの2つだけです。Groovy の build.gradle と Kotlin の は、雛形では引用符や括弧と test の選び方の4か所が違うだけで、出来た の中身は一致しました。プロジェクト名は に、Gradle の版は wrapper にあります。

点線の付いた語はタップすると説明が出ます。用語集を開く →

雛形の build.gradle(28行)の6つのまとまりと、それぞれが何を決めるか(Gradle 9.7.1 / Boot Gradle plugin 4.1.1)
plugins(1〜5行目)java / org.springframework.boot / io.spring.dependency-management
部品を「適用」する。タスクや規約はここから来る
3つのプラグインが足すもの
javacompileJava・jar・test などのタスクと src/main/java の規約
org.springframework.bootbootJar・bootRun。java を見つけると反応する
dependency-managementBoot の BOM を取り込む。依存の版を省ける理由
7〜18行目: 座標(group・version)、toolchain(Java 25)、repositories(mavenCentral)
dependencies(20〜24行目)implementation / testImplementation / testRuntimeOnly の3行。版は無し
Maven の <dependencies>。語が Maven のスコープに当たる
configuration ごとに、どのクラスパスに入るかが決まる
compileClasspathcompileJava が使う。implementation
runtimeClasspathbootJar の BOOT-INF/lib(34本)。implementation + runtimeOnly
testRuntimeClasspathtest が使う。上の全部 + testImplementation + testRuntimeOnly
26〜28行目: tasks.named('test') { useJUnitPlatform() }
settings.gradlerootProject.name = 'demo'。成果物名 demo-0.0.1-SNAPSHOT.jar の demo
gradle-wrapper.propertiesdistributionUrl = gradle-9.7.1-bin.zip。gradlew が取ってくる版
  • ・素材は start.spring.io(2026-10-03 取得)の Boot 4.1.1 / Java 25 / 依存 web の雛形。Groovy DSL 版の build.gradle と Kotlin DSL 版の build.gradle.kts(DSL は、設定を書くための専用の言語という意味)は、どちらも28行で、違いは4か所でした。引用符や括弧の書き方が3か所と、test タスクを名前で選ぶ(tasks.named)か型で選ぶ(tasks.withType)かが1か所です。この雛形では出来た JAR は一致しました
  • ・Gradle 9.7.1 の手引きは、ビルドスクリプトは Groovy の build.gradle か Kotlin の build.gradle.kts で、受け付ける言語はこの2つだけ、としています。start.spring.io の既定(メタデータ API の type.default)は gradle-project = Groovy DSL でした
  • ・Boot の Gradle plugin の文書は、単体で適用しても「ほとんど変更を加えない」で、java プラグインが適用されたのを検知して bootJar などを構成する、と書いています。io.spring.dependency-management を適用すると spring-boot-dependencies の BOM を自動で取り込みます
  • ・./gradlew dependencies --configuration runtimeClasspath では、依存の木の中に spring-boot-starter-webmvc -> 4.1.1 や commons-logging:1.3.5 -> 1.3.6 のように -> が付く行があります。要求と違う版が選ばれたしるしで、BOM が決めた場合(commons-logging・micrometer)と、複数の要求がぶつかって新しい方が選ばれた場合(slf4j-api・jspecify。BOM の無い Ivy でも同じ版になりました)があります
  • ・java { toolchain } は、Gradle 9.7.1 の java プラグインの文書では「コンパイルや実行など JVM の道具を使うタスクが使う Java toolchain」(Java toolchain to be used by tasks using JVM tools, such as compilation and execution.)です。ここでは Java 25 を指定しています。useJUnitPlatform() は test タスクに JUnit 5(JUnit Platform)を使わせる指定で、こちらの文書の逐語は取っていません
  • ・下のコードは configuration とクラスパスの対応の模型で、Gradle の実装ではありません。継承の関係(testImplementation extends implementation など)は Gradle 9.7.1 の java プラグインの表の逐語に合わせました

▶ サンプルコードを実行してみよう(自由に書き換えてOK)

Java

図やコードに出てくる用語(タップで説明)

サンプルコードで身につける(5本) →

学んだ概念を、素朴な例から実務寄りの例まで5つの具体例で確認します。

公式ドキュメントで詳しく ↗