はじめに
この記事では、Java のビルドツールである Maven の概要を記載します。あわせて Gradle など他のビルドツールとの違いにも触れます。
そもそもビルドツールとは
Java のソースコード(.java)は、そのままでは動きません。次のような作業を経て、ようやくアプリケーションが動きます。
- コンパイル(
.java→.class) - 外部ライブラリの取得(JDBC ドライバ、テストライブラリなど)
- テストの実行
- 配布用ファイル(
.jar/.war)の作成
小さなプログラムなら手動でもできますが、ライブラリが増えてくると一気に大変になります。「このライブラリを使うには、別のライブラリも必要」という依存関係(dependency)が芋づる式に出てくるためです。
この一連の作業を自動化してくれるのがビルドツールで、Java では Maven と Gradle が広く使われています。
Maven とは
Maven は Apache が開発している、Java 向けのビルドツールです。2004年に最初のバージョンが公開されたツールです。
Maven の中心にあるのが POM(Project Object Model) という考え方です。pom.xml という1つの XML ファイルに、プロジェクトの情報・使うライブラリ・ビルドの設定を書いておくと、Maven がそれを読んで必要な作業をまとめて実行してくれます。
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<dependencies>
<!-- JUnit(テストライブラリ)を使いたい、と書くだけ -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.11.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
このように「JUnit が欲しい」と書いておけば、Maven が自動でインターネット上のリポジトリ(Maven Central)からダウンロードしてきます。さらに JUnit が内部で必要としている別のライブラリも、Maven が一緒に取得してくれます。手動で JAR ファイルを探してきて配置する、という作業がなくなります。
scope は「そのライブラリをいつ使うか」を指定する項目です。test を指定すると、テスト時だけ使われ、本番の成果物には含まれません。
Maven の基本コマンド
Maven はライフサイクルという決まった処理の流れを持っていて、コマンドを打つとその流れに沿って処理が進みます。よく使うものを挙げます。
| コマンド | 何をするか |
|---|---|
mvn compile |
ソースコードをコンパイルする |
mvn test |
テストを実行する |
mvn package |
.jar / .war を作成する |
mvn clean |
ビルドで生成されたファイルを削除する |
mvn install |
成果物をローカルリポジトリに保存する |
例えば mvn package を実行すると、コンパイル → テスト → パッケージング、という前段階の処理も自動で順番に走ります。1つずつ手で実行する必要はありません。
「設定より規約」という思想
Maven を理解するうえで知っておくとよいのが、設定より規約(Convention over Configuration) という考え方です。
Maven では、ファイルの置き場所があらかじめ決められています。
my-app/
├── pom.xml
└── src/
├── main/
│ └── java/ ← 本体のソースコード
└── test/
└── java/ ← テストコード
この決まりに従っておけば、「ソースコードはどこにあるか」「テストはどこか」を設定ファイルに書く必要がありません。規約どおりに置いてあることを Maven が前提にしているためです。
他のビルドツールとの比較
Java のビルドツールは Maven だけではありません。代表的なものを比較します。
| ツール | 設定ファイル | 特徴 |
|---|---|---|
| Maven |
pom.xml(XML) |
規約重視で構成が統一されやすい。情報・実績が豊富 |
| Gradle |
build.gradle(Groovy / Kotlin) |
記述が柔軟で短い。Android 開発の標準 |
| Ant |
build.xml(XML) |
古くからあるツール。自由度は高いが依存管理は手動寄り |
Maven と Gradle
現在の Java 開発では、実質的に Maven と Gradle のどちらかを選ぶことが多いと思います。
Maven は XML で設定を書きます。記述はやや冗長になりますが、書き方のパターンが決まっているので、誰が書いても似た形になり読みやすいです。情報も多く、初学者がつまずいたときに検索で解決しやすいのは大きな利点だと思います。
Gradle は Groovy や Kotlin というプログラミング言語で設定を書きます。条件分岐などを設定内に書けるため柔軟で、記述量も少なく済みます。Android アプリ開発では Gradle が標準です。一方で、自由度が高いぶん書き方の幅が広く、読み解くのに慣れが必要な場面もあります。
開発環境とバージョンについて
これから Maven を使い始める場合、2026年6月時点での状況は次のとおりです。
- 安定版(推奨):Maven 3.9.16
- 次期メジャー:Maven 4.0.0(リリース候補版 rc-5 の段階。本番利用は非推奨)
Maven 3.9系は JDK 8 以上で動作します。これから学ぶなら、まずは安定版の 3.9系を使うのが無難だと思います。
Maven 4.0.0 は大きな変更を含むメジャーバージョンですが、執筆時点ではまだリリース候補(RC)の段階で、正式版ではありません。Maven 3.x との互換性は重視されているものの、本番環境での利用は正式リリースを待つのがよいです。なお Maven 4 の実行には JDK 17 以上が必要になります。
まとめ
この記事では、Java のビルドツールである Maven の概要と、他ツールとの比較を見てきました。
Maven は pom.xml にプロジェクト情報や使うライブラリを書いておくと、ライブラリの取得・コンパイル・テスト・パッケージングをまとめて自動化してくれるツールです。「設定より規約」の方針でファイル構成が統一されやすく、情報も豊富なので、初学者が最初に触れるビルドツールとして分かりやすいと思います。Gradle はより柔軟で記述が短い一方、慣れが必要な面もあるので、目的に応じて選んでいけるといいですね。