こんにちは、かつコーチです。
前回はJavaの代表的なビルドツールであるMavenを解説しました。
今回はもう一つの主要ツールGradleを扱います。
私は最初、MavenのXML記法に慣れた状態でGradleを触り、build.gradleの書き方が全く違うことに戸惑いました。
特にセミコロンの有無や波かっこの使い方で構文エラーを連発した経験があります。
Gradleとは何か
MavenとGradleの位置づけ
前回のおさらいになりますが、GradleもMaven同様、依存関係の管理とビルドの自動化を行うツールです。
大きな違いは設定ファイルの記法にあります。
- Maven:
pom.xmlというXML形式で設定を記述する - Gradle:
build.gradleというGroovyまたはKotlin DSL(プログラムに近い記法)で記述する
XMLより柔軟に書ける分、独自の記法を覚える必要があり、初心者にとってはMavenよりとっつきにくく感じられることがあります。
なぜGradleを学ぶ必要があるのか
近年のAndroid開発は標準でGradleを採用しており、Spring Bootのプロジェクトでも、MavenかGradleかを選べるケースが増えています。
「どちらを使うべきか」という判断軸としては、次のように考えるとよいでしょう。
| 状況 | おすすめ |
|---|---|
| Spring Bootの学習を始めたばかり | Maven(規約通りでシンプル) |
| Androidアプリ開発をする | Gradle(事実上の標準) |
| ビルド速度や柔軟な設定を重視したい | Gradle |
| チームがすでにどちらかを採用している | チームに合わせる |
どちらか一方だけを覚えれば十分というものではなく、両方の基本を読み書きできる状態を目指すのが実務では現実的です。
基本の書き方:Gradleプロジェクトの作成
手順1:build.gradleの役割を理解する
GroovyベースのGradleプロジェクトでは、build.gradleというファイルに設定を記述します。
plugins {
id 'java'
}
group = 'com.katsucoach'
version = '1.0-SNAPSHOT'
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.apache.commons:commons-lang3:3.14.0'
}
pluginsでJavaプロジェクトであることを宣言し、repositoriesで依存ライブラリの取得先、dependenciesで使用するライブラリを指定します。
手順2:IntelliJでGradleプロジェクトを作る
「New Project」画面でBuild systemに「Gradle」を選び、言語に「Java」、DSLに「Groovy」を選択すれば、必要なファイル一式が自動生成されます。
手順3:Gradle Wrapperで実行する
Gradleプロジェクトには通常、gradlew(macOS/Linux)とgradlew.bat(Windows)というGradle Wrapperが同梱されています。
./gradlew build
Wrapperを使うことで、開発者のPCにGradle本体をインストールしていなくても、プロジェクトが指定するバージョンのGradleで統一してビルドできます。
つまずきやすい設定・注意点
build.gradleはGroovyという言語の文法に沿って書くため、Mavenの感覚で波かっこやクォートを崩すと構文エラーになりやすい点に注意が必要です。
よくあるつまずきポイント・エラー対処
Gradle Wrapperのバージョン不一致
❌ Before:Wrapperを使わずローカルのGradleで実行する
チームメンバーから共有されたプロジェクトを、私は自分のPCに入っていた古いバージョンのGradleコマンドで直接ビルドしようとしました。
gradle build
その結果、次のようなエラーが発生しました。
Minimum supported Gradle version is 8.5. Current version is 7.6.
「Wrapperのgradlewを使えばいいのに、慣れたコマンドを使ってしまった」ことが原因でした。
✅ After:必ずgradlewを経由して実行する
プロジェクトに同梱されたgradlew(./gradlew)を使えば、プロジェクトが指定するバージョンのGradleが自動でダウンロードされ、環境差異によるエラーを防げます。
./gradlew build
以降、Gradleプロジェクトではgradleコマンドを直接使わず、必ず./gradlewを使うことを徹底しています。
依存関係のスコープを誤る
implementationとapiのように、Gradleには依存関係の公開範囲を表す複数のキーワードがあります。
初心者のうちは、他のモジュールに依存関係を伝播させないimplementationを基本として使っておけば大きな問題は起きません。
応用・一歩先の使い方
./gradlew tasksを実行すると、そのプロジェクトで利用可能なタスク一覧を確認できます。
./gradlew tasks
build・test・runなど、Mavenのライフサイクルに相当する処理がタスクという単位で管理されており、独自のタスクを追加することも可能です。
まとめ
この記事のポイント
- GradleはGroovy/Kotlin DSLで設定を記述するビルドツール
- Android開発では事実上の標準、Spring Bootでも選択肢の一つ
gradlew(Gradle Wrapper)を使えばバージョン差異によるエラーを防げる- 依存関係のスコープは基本的に
implementationを使えばよい
次に読むべき記事
環境構築が一通り整ったところで、次からはいよいよJavaの基本文法に入っていきます。
→ 次の記事:変数とプリミティブ型の基本
タグ: Java, 初心者向け, 環境構築