build.gradle の中を見てみよう
このレクチャーでは、build.gradle について理解を深めましょう。 build.gradle は、ビルドシステム Gradle の設定ファイルです。
ソフトウェア開発では、ビルドシステムを使い、ソースコードから実行可能ファイルを生成します。 まずは、なぜビルドシステムを使うのかを説明します。 そして、build.gradle にどのようなことが書かれているのかの全体像を示します。
目次
ビルドシステムとは
ソフトウェア開発プロジェクトの重要なチェックポイントのひとつは、実行可能ファイルを生成することです。 Java のプロジェクトであれば jar ファイルや war ファイルなどが実行可能ファイルとなります。 では、ソースコードからこのような実行可能ファイルを生成するにはどのようなステップが必要なのでしょうか。
- 大量のソースコードをコンパイル
- リソースファイルや依存関係の管理
- テストの実行
- これらをパッケージング
このように、実行可能ファイルを生成するためのプロセスは複雑です。 ビルドシステムはこれらの作業を自動化し、開発者が効率的にソフトウェアのビルドを行えるように支援します。
代表的なビルドシステムには、Gradle、Apache Maven などがあります。
build.gradle とはなにか?
この講座では、ビルドシステムに Gradle を採用しました。 Gradle の挙動を設定するファイルが build.gradle というファイルです。
それでは、build.gradle の中身を見ていきましょう。 今回説明する build.gradle ファイルは次のとおりです:
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.5'
id 'io.spring.dependency-management' version '1.1.0'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.0'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation group: 'org.webjars', name: 'bootstrap', version: '5.2.3'
implementation group: 'org.webjars', name: 'webjars-locator-core', version: '0.52'
implementation group: 'nz.net.ultraq.thymeleaf', name: 'thymeleaf-layout-dialect', version: '3.2.0'
implementation 'org.springframework.boot:spring-boot-starter-validation'
}
tasks.named('test') {
useJUnitPlatform()
}
plugins セクション
plugins セクションでは、プロジェクトで使用する Gradle プラグインを宣言しています。 Gradle のプラグインを使うと、Gradle ビルドシステムを拡張し、追加の機能やタスク利用できるようになります。
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.5'
id 'io.spring.dependency-management' version '1.1.0'
}
このファイルで宣言している plugin の概要は次のとおりです:
- java
- Javaプラグインを使用することを宣言します
- Javaソースコードのコンパイル (compileJava タスク)、Jar ファイルの生成 (jar タスク)、テストの実行 (test タスク) など、Java プロジェクトの基本的なビルドタスクが提供されます
- org.springframework.boot
- Spring Bootプラグインを使用することを宣言します
- これにより、Spring Boot 固有のビルドタスク (bootRun タスクなど) が提供されます
- io.spring.dependency-management
- Springの依存関係管理プラグインを使用することを宣言します
- このプラグインにより、Spring の依存関係のバージョン管理が簡単に記述できるようになります
group / version / sourceCompatibility
このセクションでは、プロジェクトの
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
- group
- プロジェクトのグループ名を指定します。com.exampleというグループ名が使用されています
- version
- プロジェクトのバージョンを指定します。0.0.1-SNAPSHOTというバージョンが使用されています
- sourceCompatibility
- コンパイルされるJavaソースのバージョンを指定します。17というバージョンが指定されています
configurations
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
- あとのレクチャーで解説する lombok を利用する上で必要な設定です
- ビルド構成(configurations)を定義します。ここではcompileOnlyという構成が定義されています。
- コンパイル時にのみ依存関係を使用するライブラリを指定します
- ここでは、annotationProcessor も compileOnly に含まれるように設定されています
repositories セクション
repositories {
mavenCentral()
}
repositoriesセクションは、Gradleビルドスクリプト内で使用されるリポジトリの設定を定義します。 リポジトリは、ビルドプロセス中に依存関係の解決や必要なライブラリのダウンロードを行うために使用されます。 今は maven central が設定されています。
dependencies セクション
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.0'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation group: 'org.webjars', name: 'bootstrap', version: '5.2.3'
implementation group: 'org.webjars', name: 'webjars-locator-core', version: '0.52'
implementation group: 'nz.net.ultraq.thymeleaf', name: 'thymeleaf-layout-dialect', version: '3.2.0'
implementation 'org.springframework.boot:spring-boot-starter-validation'
}
プロジェクトの依存関係を指定します。 ここでは、Spring Boot の様々な starter ライブラリや、その他に必要なライブラリが指定されています。
- implementation: 実行時およびコンパイル時に必要な依存関係を指定します
- compileOnly: コンパイル時のみに必要な依存関係を指定します
- developmentOnly: 開発時のみに必要な依存関係を指定します
- runtimeOnly: 実行時のみに必要な依存関係を指定します
- annotationProcessor: アノテーションプロセッサの依存関係を指定します
- testImplementation: テストコードの実行に必要な依存関係を指定します
テストに関する設定
tasks.named('test') {
useJUnitPlatform()
}
test タスクに対しての設定を行います。 ここでは、JUnit Platform を使用してテストを実行するように設定されています。
まとめ
このレクチャーでは、build.gradle に記載されている内容を簡単に確認しました。 build.gradle は Gradle ビルドシステムのための設定ファイルです。 ソフトウェア開発プロジェクトのビルドプロセスや依存関係の管理などを定義します。 build.gradle の設定によって、ソースコードのコンパイルやリソースの処理、依存関係の解決ができるようになります。