JavaのGradle入門|依存関係管理と自動ビルド

先生

Javaのビルド、もう手作業で消耗するのは終わりにしませんか?Gradleでスマートに開発を進めよう!

Gradleとは?Java開発を効率化するビルドツール

Gradleは、Javaプロジェクトのビルド、テスト、デプロイを自動化するための強力なビルドツールです。Apache Mavenの後継として登場し、XMLベースのMavenの設定ファイルの記述の冗長さを解消し、GroovyやKotlin DSLを使用することで、より簡潔で柔軟なビルドスクリプトを実現します。

Gradleは単なるビルドツールではありません。依存関係管理、タスクの自動化、マルチプロジェクトのサポートなど、Java開発を効率化するための様々な機能を提供します。大規模なプロジェクトになるほど、その恩恵を強く感じられるでしょう。

この記事では、Gradleの基本的な概念から、インストール方法、設定ファイルの書き方、よく使うタスクについて解説します。Gradleを初めて使う方でも、この記事を読めばGradleの基礎を理解し、自分のプロジェクトに導入できるようになるでしょう。

Gradleのインストールと環境構築

Gradleを使用するには、まずGradleをインストールする必要があります。ここでは、主要なOSでのインストール方法を説明します。

Windows:

1. Gradleの公式サイトから最新版のGradleディストリビューションをダウンロードします。(https://gradle.org/releases/)

2. ダウンロードしたZIPファイルを任意の場所に展開します。

3. 環境変数 GRADLE_HOME を作成し、展開したディレクトリのパスを設定します。

4. 環境変数 PATH%GRADLE_HOME%\bin を追加します。

5. コマンドプロンプトを開き、gradle -v コマンドを実行して、Gradleが正常にインストールされたことを確認します。

macOS:

Homebrewを使って簡単にインストールできます。

brew install gradle

インストール後、gradle -v コマンドを実行して、Gradleが正常にインストールされたことを確認します。

Linux:

SDKMAN!を使ってインストールする方法が推奨されます。

sdk install gradle

インストール後、gradle -v コマンドを実行して、Gradleが正常にインストールされたことを確認します。

build.gradle.kts:Gradleの設定ファイル

Gradleの設定ファイルは、通常 build.gradle.kts という名前でプロジェクトのルートディレクトリに配置されます。このファイルには、プロジェクトの依存関係、ビルド設定、タスクなどが記述されます。

build.gradle.ktsはKotlin DSLで記述されます。Groovy DSLで記述することも可能ですが、Kotlin DSLの方が型安全で、IDEのサポートも充実しているため、推奨されています。

以下は、基本的なbuild.gradle.ktsファイルの例です。

plugins {
    java
}

group = "org.example"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
}

dependencies {
    implementation("org.apache.commons:commons-lang3:3.12.0")
    testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.1")
    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.1")
}

tasks.test {
    useJUnitPlatform()
}

この例では、以下の設定を行っています。

plugins { java }: Javaプラグインを適用しています。

group = "org.example": プロジェクトのグループIDを設定しています。

version = "1.0-SNAPSHOT": プロジェクトのバージョンを設定しています。

repositories { mavenCentral() }: Maven Centralリポジトリを依存関係の解決に使用することを指定しています。

dependencies { ... }: プロジェクトの依存関係を定義しています。

implementation("org.apache.commons:commons-lang3:3.12.0"): Apache Commons Lang3ライブラリを実装依存として追加しています。

testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.1"): JUnit Jupiter APIをテスト実装依存として追加しています。

testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.1"): JUnit Jupiter Engineをテスト実行時のみの依存として追加しています。

tasks.test { useJUnitPlatform() }: テストタスクでJUnit Platformを使用するように設定しています。

依存関係の管理:

dependenciesブロックでは、implementationapicompileOnlyruntimeOnlyなど、様々な依存関係スコープを指定できます。スコープによって、依存関係がコンパイル時、実行時、テスト時などにどのように利用されるかが決まります。

implementation: モジュールをコンパイルするために必要であり、モジュールのAPIの一部ではない依存関係に使用します。

api: モジュールをコンパイルするために必要であり、モジュールのAPIの一部である依存関係に使用します。他のモジュールがこのモジュールに依存する場合、これらの依存関係もコンパイル時に必要になります。

compileOnly: コンパイル時にのみ必要で、実行時には不要な依存関係に使用します。たとえば、アノテーションプロセッサなどです。

runtimeOnly: コンパイル時には不要で、実行時にのみ必要な依存関係に使用します。たとえば、特定のデータベースドライバなどです。

Gradleの基本的なタスク

Gradleには、様々なタスクが用意されています。ここでは、よく使う基本的なタスクを紹介します。

gradle build: プロジェクトをビルドします。コンパイル、テスト、パッケージングなど、一連のビルド処理を実行します。

gradle clean: ビルド成果物を削除します。buildディレクトリを削除することで、クリーンな状態からビルドをやり直すことができます。

gradle test: テストを実行します。src/test/javaディレクトリにあるテストコードを実行し、結果を表示します。

gradle run: アプリケーションを実行します。mainメソッドを持つクラスを実行します。

gradle tasks: 利用可能なタスクの一覧を表示します。プロジェクトで定義されているタスクと、Gradleが提供するデフォルトのタスクを確認できます。

これらのタスクは、コマンドラインから gradle <タスク名> のように実行します。例えば、gradle buildと入力してEnterキーを押すと、プロジェクトのビルドが開始されます。

参考リンク

まとめ

この記事では、Gradleの基本的な概念、インストール方法、設定ファイルの書き方、よく使うタスクについて解説しました。Gradleは、Java開発を効率化するための強力なツールであり、使いこなすことで開発プロセスを大幅に改善できます。ぜひGradleを導入して、より快適なJava開発を体験してください。