【プログラミングしてみよう35】Javaのビルドツール入門(Maven/Gradle)

Java

前回はJUnit5とMavenを使ったユニットテストを学びました。 今回は「ビルドツール」について解説します。 Mavenはすでにインストール済みなので、MavenとGradleそれぞれの基本的な使い方と違いを理解し、実際の開発でどう活用するかを学びましょう。

ビルドツールとは

これまでのサンプルでは javac でコンパイルし、java で実行するという手順を1つずつ手動で行ってきました。しかし実際のプロジェクトでは、複数のファイルのコンパイル・外部ライブラリの管理・テストの実行・JARファイルの作成など、さまざまな作業が発生します。

「ビルドツール」はこれらをまとめて自動化するためのツールです。Javaでよく使われるビルドツールは以下の2つです。

  • Maven: 設定をXML(pom.xml)で管理する。歴史が長く安定している
  • Gradle: 設定をGroovyまたはKotlinで管理する。柔軟で高速

Mavenの基本

前回JUnitの記事でMavenプロジェクトを作成しました。Mavenプロジェクトは以下のような構成になっています。

junit-sample/
├── pom.xml                          // プロジェクト設定ファイル
└── src/
    ├── main/
    │   └── java/
    │       └── com/example/         // 本番コード
    └── test/
        └── java/
            └── com/example/         // テストコード

pom.xml はMavenプロジェクトの設定ファイルで、プロジェクト情報・依存するライブラリ・ビルド設定などを記述します。

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>      <!-- 組織・会社のID(逆ドメイン形式が慣例) -->
  <artifactId>junit-sample</artifactId> <!-- プロジェクト名 -->
  <version>1.0-SNAPSHOT</version>     <!-- バージョン -->

  <dependencies>
    <!-- ここに使用するライブラリを追記する -->
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <version>5.11.0</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

よく使うMavenコマンドは以下の通りです。

mvn compile        // ソースコードをコンパイルする
mvn test           // テストを実行する
mvn package        // JARファイルを作成する
mvn clean          // ビルド成果物を削除する
mvn clean package  // クリーンしてからJARファイルを作成する

サンプル(Mavenプロジェクトの構成)

前回作成した junit-sample フォルダで以下のコマンドを試してみましょう。

cd junit-sample
mvn compile

実行結果は次のようになります。

[INFO] Scanning for projects...
[INFO] --- maven-compiler-plugin:3.13.0:compile ---
[INFO] Compiling 1 source file with javac [debug release 8] to target/classes
[INFO] BUILD SUCCESS

次にJARファイルを作成してみます。

mvn package

成功すると target/ フォルダに junit-sample-1.0-SNAPSHOT.jar が作成されます。

[INFO] Building jar: /Users/panmaru/.../target/junit-sample-1.0-SNAPSHOT.jar
[INFO] BUILD SUCCESS

Gradleの基本

GradleはMavenより後発のビルドツールで、設定をプログラムのように書けるのが特徴です。まずインストールします。

brew install gradle

インストール確認をします。

gradle -version

Gradleプロジェクトは以下のコマンドで作成します。

mkdir gradle-sample
cd gradle-sample
gradle init --type java-application --dsl groovy

GradleプロジェクトのフォルダはMavenと同じような構成ですが、設定ファイルが pom.xml ではなく build.gradle になります。

gradle-sample/
├── build.gradle       // プロジェクト設定ファイル
├── settings.gradle    // プロジェクト名などの設定
└── src/
    ├── main/java/     // 本番コード
    └── test/java/     // テストコード

build.gradle の中身はMavenのXMLよりもシンプルです。

plugins {
    id 'java'
    id 'application'
}

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter:5.11.0'
}

application {
    mainClass = 'com.example.App'
}

よく使うGradleコマンドは以下の通りです。

gradle compileJava     // ソースコードをコンパイルする
gradle test            // テストを実行する
gradle build           // コンパイル・テスト・JARファイル作成をまとめて行う
gradle clean           // ビルド成果物を削除する
gradle run             // アプリを実行する

MavenとGradleの比較

              Maven              Gradle
設定ファイル   pom.xml(XML)       build.gradle(Groovy/Kotlin)
設定の書きやすさ 冗長になりがち    シンプルで読みやすい
ビルド速度    普通               高速(キャッシュが効く)
安定性        非常に高い         高い
普及率        非常に高い         高い(特にAndroid開発)
学習コスト    低め               やや高め

どちらを使うかはプロジェクトや職場によって異なります。Androidアプリ開発ではGradleが標準で、WebアプリやJavaの業務システムではMavenが多く使われています。

コードの解説

ビルドツールの最大のメリットは「依存関係の管理」です。これまではライブラリのJARファイルを手動でダウンロードして指定する必要がありましたが、pom.xmlbuild.gradle にライブラリ名とバージョンを書くだけで、ビルドツールが自動的にインターネットからダウンロードして使えるようにしてくれます。

mvn packagegradle build でJARファイルを作ることで、作成したプログラムを他の人に配布したり、サーバーにデプロイしたりすることができます。

<scope>test</scope> (Maven)や testImplementation (Gradle)は、そのライブラリをテスト時だけ使うという指定です。本番のJARファイルには含まれません。JUnitをこの設定で追加しているのはそのためです。

まとめ

ビルドツールを使うことで、コンパイル・テスト・JARファイル作成・ライブラリ管理を自動化できます。MavenはXMLで設定を書き安定性が高く、GradleはGroovyで設定を書きビルドが高速という違いがあります。どちらも src/main/java に本番コード、src/test/java にテストコードを置くという構成は共通です。実際の開発現場ではほぼ必ずどちらかのビルドツールが使われているため、基本的な使い方を覚えておくと大きな力になります。

2026/07/14(火) ぱんまる

コメント

タイトルとURLをコピーしました