
Java開発では、ビルドツールの仕組みをベースに作成するのが主流です。Eclipseで1からプロジェクトを作る際も使われています。今では当たり前に使われているビルドツールですが、そもそもこのツールは何なのでしょうか。Eclipseを使って実際に「Mavenプロジェクト」を作成する方法と共にお伝えします。
- ビルドツールがないと起きる2つの問題
- ビルドツールがその問題を解決する
- Eclipse で Maven プロジェクトを作成する方法
Maven などのビルドツールが導入される経緯を知ることで、どうしてこの設定をするのかを理解できるようになります。
ビルドツールがないと起きる2つの問題
古い開発スタイルでは、外部のライブラリ (例: ログ出力用のJarや、DB接続用のJarなど) を使うために、手動でWebサイトからダウンロードしてEclipseのビルドパスに追加していました。
依存関係の地獄 (Dependency Hell)
あなたが「ライブラリA」を使いたいとします。しかし、ライブラリAを動かすためには「ライブラリB」が必要で、さらにライブラリBを動かすためには「ライブラリCのバージョン2.0」が必要である、といったように、ライブラリ同士が複雑に絡み合っています。これを手動ですべて調べて、正しいバージョンのJarファイルを1つずつ集めるのは、気の遠くなるような作業でした。これを依存関係の地獄といいます。
環境による「動かない」の発生 (Environment-specific issue / “It works on my machine” phenomenon )
「私のPCのEclipseでは動くのに、本番サーバーに持っていったらJarのバージョンが違っていて動かない」といったトラブルが頻発していました。プロジェクトの構成が「開発者のPC環境」に依存してしまっていたためです。
ビルドツールがその問題を解決する
Maven (メイヴン) や Gradle (グレイドル) などのビルドツールは、これらの問題を鮮やかに解決します。 プロジェクトの中に1つだけ 「設定ファイル」 を用意し、そこに「このライブラリのバージョンXを使いたい」とテキストで記述するだけで終わりです。Javaでは Mavenと Gradleがシェアを二分しています。「Spring Boot 3.x」は、MavenとGradleのどちらにも対応しています。
| Maven | 設定を XML 形式で書きます。ルールが非常に厳格で、誰が書いても同じ構造になるため、日本のエンタープライズ (堅牢な企業システム) 開発や、歴史のあるプロジェクトでは今でも圧倒的なシェアを誇ります。 |
| Gradle | 設定を Groovy や Kotlin というプログラム言語の形式で書きます。Mavenよりも柔軟で、記述量が少なく、ビルドスピードが高速なため、比較的新しいモダンなプロジェクトや、スタートアップ、Android開発などで主流です。 |
Maven 設定例
たとえば、現代のJava開発で非常によく使われる「JSONを扱うためのライブラリ (Jackson)」を導入したい場合、Maven の設定ファイルである pom.xml に以下のようなコードを数行書き加えるだけです。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>これだけで、ビルドツールが以下の作業を裏側ですべて自動で行ってくれます。
| 自動ダウンロード | インターネット上にある巨大な中央倉庫 (セントラルリポジトリ) から、指定されたJarファイルを自動でダウンロードしてきます。 |
| 依存関係のイモづる式解決 | そのライブラリが動くために必要な「別のライブラリ」も自動で判別し、一緒にダウンロードしてプロジェクトに組み込みます。 |
| Eclipseへの同期 | Eclipse側にも「このJarをビルドパスに通しておいたよ」と自動で通知します。 |
Gitなどのソースコード管理ツール側で、重いJarファイルを含める必要はありません。この「設定ファイル (テキスト)」だけを共有すれば、世界中どこのPCでも全く同じ開発環境がすぐに再現可能です。
Eclipse で Mavenプロジェクト を作成する方法
ここからは以下についてお伝えします。
- Eclipse で Mavenプロジェクト を作成する方法
- pom.xml にJava のバージョン設定を追加する方法
- ライブラリの自動ダウンロード方法 (外部ライブラリの自動導入)
- 自動導入されたライブラリを使ってみる

画面上部のメニューから [ファイル] -> [新規] -> [Mavenプロジェクト] を選択します。

「シンプルなプロジェクトの作成 (アーキタイプ選択のスキップ)」というチェックボックスが表示されたら、そこにチェックを入れて [次へ] をクリックしてください。

次の画面で、プロジェクトの「識別名」を決めるために以下の2項目を入力します。入力後、完了をクリックしてください。これで Eclipse のパッケージエクスプローラーに maven-sample というプロジェクトが作成されます。
| グループ Id (Group Id) |
com.example | 開発元を表す識別子。通常は会社のドメインなどを逆順にしたものです。 |
| アーティファクト Id (Artifact Id) |
maven-sample | これがそのままプロジェクト名・フォルダ名になります |

プロジェクトを作成すると、上記画像のようにいくつかのディレクトリが自動生成されます。各ディレクトリの説明は以下の通りです。
| src/main/java | 本番用のJavaソースコードを置く場所。実際にシステムを動かすためのJavaクラスは、すべてこの中にパッケージを作って配置します |
| src/main/resources | 本番用の設定ファイルや画像などを置く場所。例えば、データベースの接続情報が書かれたプロパティファイル(.properties)や、WebアプリのHTMLテンプレート、XMLファイルなどがここに入ります。 |
| src/test/java | テスト用のJavaソースコードを置く場所。「自動テストコード(JUnit)」を置く専用の場所です。本番用のコードとは完全に分離されています。 |
| src/test/resources | テスト用の設定ファイルなどを置く場所。テストコードを実行するときだけ使用したい設定ファイルなどを置きます。 |
| target/ | ビルドされた成果物 (.classや.jar) が入る場所(自動生成)。Mavenがプログラムをコンパイルした結果が自動的に格納されるため、基本ここは触らない。 |
| pom.xml | Mavenの設定ファイル。POMは Project Object Model の略です。プロジェクトの名前、Javaのバージョン、そして使いたい外部ライブラリをここにテキストで記述します。 |
ちなみに pom.xml は以下のようになっています。(この記事ではグループIdを asia.sabay-sabay と入力)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>asia.sabay-sabay</groupId>
<artifactId>maven-sample</artifactId>
<version>0.0.1-SNAPSHOT</version>
</project>Maven プロジェクトの設定ファイルにJava のバージョン設定を追加する方法
たとえば、Maven プロジェクトの設定ファイル pom.xml に Java 21 の設定を追加するには、以下のように記述してください。この記述は「このプロジェクトはJava 21で動かします」という宣言を pom.xml に書き加えるということです。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>asia.sabay</groupId>
<artifactId>maven-sample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- ここから追記 -->
<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
</properties>
<!-- ここまで追記 -->
</project>groupId には後々、パッケージ名として使えなくなるので – “ハイフン”を使わないようにした方がよいでしょう。(画像ではハイフン使っています。ごめんなさい)

追記して保存したあと、プロジェクトを右クリックして [Maven] -> [プロジェクトの更新…] を行い、[OK] をクリックしてください。これでEclipse側にもJava 21の設定が同期されます。
ライブラリの自動ダウンロード方法 (外部ライブラリの自動導入)
<!-- さきほどの Java 21 設定 -->
<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
</properties>
<!-- ここからさらに追記 -->
<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.5.6</version>
</dependency>
</dependencies>
<!-- ここまで追記 -->ここでは Java開発のログ出力のデファクトスタンダードである SLF4J と Logback というライブラリを導入します。pom.xml に依存関係を追記することで、ライブラリの自動ダウンロードを実現することが可能です。上記の <dependencies> ブロックを pom.xml に追記して保存してください。
保存またはプロジェクトの更新を行った瞬間に、Eclipseの画面右下で一瞬プログレスバーが動き、インターネットからJarファイルが自動ダウンロードされます。

保存後、パッケージ・エクスプローラー内にある 「Maven 依存関係 (Maven Dependencies)」 という仮想フォルダを開いてみてください。 logback-classic を指定するだけで、それが必要とする logback-core や slf4j-api といった関連するJarファイルまで自動で集められているのが確認できるはずです。
自動導入されたライブラリを使ってみる

ここでは上記で導入した SLF4J, Logback という2つのライブラリが使えるかどうかを試してみます。まず、src/main/java を右クリックして [新規] -> [クラス] を選択します。

パッケージ名にグループIDで指定した値、クラス名に Main と入力し、public static void main のチェックを入れて [完了] を押してください。

package asia.sabay;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
// ログ出力用のインスタンスを生成(現代Javaの標準的なロガー定義)
private static final Logger logger = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
var message = "Mavenによるライブラリ導入に成功しました!!";
// Java 8時代までのSystem.out.printlnの代わりに、ロガーを使います
logger.info("現在のメッセージ: {}", message);
}
}新規に作成されたMain.javaに、上記のように記述してください。パッケージ名はご自身で設定したものを入力してください。実行後、コンソールに時間・実行スレッド名とログが出力されれば、Maven開発環境の構築と実践は無事に成功です。
コメント