カテゴリ: Jakarta EE 更新日: 2025/11/08

Jakarta EEでマルチモジュールプロジェクトを構成する方法|MavenやGradleでの実践例

マルチモジュールプロジェクトの作り方
マルチモジュールプロジェクトの作り方

先生と生徒の会話形式で理解しよう

生徒

「Jakarta EEで開発を始めたいんですが、マルチモジュールプロジェクトって何ですか?」

先生

「良いテーマですね。Jakarta EEのようなエンタープライズアプリケーションでは、複数の機能を役割ごとに分割したマルチモジュール構成が一般的なんですよ。」

生徒

「機能ごとに分けると何かメリットがあるんですか?」

先生

「はい、保守性や再利用性が高まり、大規模なJakarta EEアプリでも効率的に開発・管理できるようになります。では実際に作り方を見ていきましょう!」

1. Jakarta EEにおけるマルチモジュール構成とは

1. Jakarta EEにおけるマルチモジュール構成とは
1. Jakarta EEにおけるマルチモジュール構成とは

Jakarta EEのようなJavaエンタープライズアプリケーションでは、プロジェクトを複数のモジュール(サブプロジェクト)に分割して構成することがよくあります。これを「マルチモジュールプロジェクト」と呼びます。代表的なビルドツールとしては、MavenGradleが使われます。

例えば、以下のようにモジュールを分けることで、機能ごとの分離が明確になり、Jakarta ServletやJakarta REST、EJB、JPAなどのコンポーネントを独立して管理しやすくなります。

  • webモジュール:Jakarta ServletやJSPを管理
  • serviceモジュール:ビジネスロジックを管理
  • domainモジュール:エンティティクラスやDTOなどを定義
  • persistenceモジュール:JPAやデータベースとの連携部分を担当

2. Mavenでのマルチモジュール構成の基本

2. Mavenでのマルチモジュール構成の基本
2. Mavenでのマルチモジュール構成の基本

Mavenでは、親プロジェクト(ルートプロジェクト)を定義し、その配下に複数の子モジュールを定義することでマルチモジュール構成を実現します。

以下は、Jakarta EEアプリケーションをMavenでマルチモジュール化する際の基本構成です。


my-jakartaee-app/
├── pom.xml(親)
├── domain/
│   └── pom.xml
├── service/
│   └── pom.xml
├── web/
│   └── pom.xml

親プロジェクトのpom.xmlでは、子モジュールを定義してまとめます。


<project>
  <packaging>pom</packaging>
  <modules>
    <module>domain</module>
    <module>service</module>
    <module>web</module>
  </modules>
</project>

3. Gradleでのマルチモジュールプロジェクト構成

3. Gradleでのマルチモジュールプロジェクト構成
3. Gradleでのマルチモジュールプロジェクト構成

GradleでもMavenと同様に、プロジェクトのルートディレクトリにsettings.gradleを定義し、サブプロジェクトを登録します。


rootProject.name = 'my-jakartaee-app'
include 'domain', 'service', 'web'

それぞれのモジュールでbuild.gradleを記述し、依存関係を明示的に設定します。例えば、serviceモジュールではdomainに依存する形になります。


dependencies {
    implementation project(':domain')
}

4. Jakarta EEのモジュール構成のポイント

4. Jakarta EEのモジュール構成のポイント
4. Jakarta EEのモジュール構成のポイント

Jakarta EEでマルチモジュールプロジェクトを構成する際には、次のような設計の工夫が重要です。

  • 依存関係の一方向化:web → service → domain というように、依存は一方向に設計しましょう。
  • 共通ライブラリの管理:ログ出力、ユーティリティクラスなどを共通モジュールにまとめると再利用しやすくなります。
  • 分離性と責務の明確化:各モジュールが独立して単体テストしやすくなるように設計するのがポイントです。

こうした構成を採用することで、Jakarta EEアプリケーションは開発効率・品質・保守性が格段に向上します。

5. Jakarta EEとマルチモジュールの組み合わせがもたらすメリット

5. Jakarta EEとマルチモジュールの組み合わせがもたらすメリット
5. Jakarta EEとマルチモジュールの組み合わせがもたらすメリット

Jakarta EEでは、多層アーキテクチャが前提となるケースが多いため、マルチモジュール構成との相性が抜群です。以下のようなメリットがあります。

  • 機能追加や変更時の影響範囲を限定できる
  • CI/CDでのビルド速度を改善できる(差分ビルド)
  • 単体テストの実行やデプロイ単位の管理が容易になる

例えば、Jakarta RESTful Web Services(JAX-RS)をwebモジュールに、JPAエンティティはdomainモジュールに、それぞれ分けることで、関心の分離を実現できます。

6. Jakarta EEで使える代表的なビルドツールと選び方

6. Jakarta EEで使える代表的なビルドツールと選び方
6. Jakarta EEで使える代表的なビルドツールと選び方

Jakarta EEのマルチモジュール構成で使われる代表的なビルドツールは以下のとおりです。

  • Maven:伝統的で安定性があり、XML構成が分かりやすい
  • Gradle:記述が簡潔で高速ビルドに対応、Kotlin DSLも使える

初心者やJakarta EEのドキュメントに忠実に進めたい方にはMavenが向いています。より柔軟性を重視したい場合はGradleを選ぶのも良いでしょう。

7. Jakarta EEとIDE(EclipseやIntelliJ)でのマルチモジュール操作

7. Jakarta EEとIDE(EclipseやIntelliJ)でのマルチモジュール操作
7. Jakarta EEとIDE(EclipseやIntelliJ)でのマルチモジュール操作

Eclipse IDEやIntelliJ IDEAでは、Jakarta EEのマルチモジュール構成に対応しています。Eclipseでは「Working Sets」機能を使うと見やすく整理できますし、IntelliJではGradle/Mavenの連携がシームレスに行えます。

どちらのIDEも、モジュール単位でのデプロイ、デバッグ、テストが可能です。特にPayaraやWildFlyなどのJakarta EE対応アプリケーションサーバと連携することで、実運用に近い開発体験が得られます。

カテゴリの一覧へ
新着記事
New1
Play Framework
Play Frameworkでフォームデータをコントローラで扱う方法を完全解説|Java初心者向けコントローラ入門
New2
Jakarta EE
Jakarta EE JSPにおけるJSTLとスクリプトレットの違いと使い分けを初心者向けに徹底解説
New3
Play Framework
Play Frameworkでクエリパラメータをコントローラで処理する方法を完全解説|Java初心者向け入門
New4
Play Framework
Play FrameworkとSpring Bootの違いを徹底比較!初心者でもわかるJavaフレームワーク入門
人気記事
No.1
Java&Spring記事人気No1
Jakarta EE
Jakarta EEのリリースサイクルとバージョンの進化をやさしく解説!
No.2
Java&Spring記事人気No2
Jakarta EE
Jakarta サーブレットのHttpServletRequestを徹底解説!初心者でもわかる基本操作と使い方
No.3
Java&Spring記事人気No3
Jakarta EE
Jakarta EEとSpringの比較|どちらを選ぶべきか?初心者向けに徹底解説!
No.4
Java&Spring記事人気No4
Jakarta EE
Jakarta EEとJava EEアプリの互換性を完全解説!移行で困らないための基礎知識
No.5
Java&Spring記事人気No5
Jakarta EE
Jakarta EE JSPでJSTL SQLタグを使った簡易データベースアクセスをやさしく解説
No.6
Java&Spring記事人気No6
Jakarta EE
Jakarta EE JSPにおけるJSTL国際化タグ(fmt:message)の使い方を初心者向けに完全解説
No.7
Java&Spring記事人気No7
Jakarta EE
Jakarta EE JSPでJSTLを使ったJSONやREST APIレスポンス処理を初心者向けにやさしく解説
No.8
Java&Spring記事人気No8
Play Framework
Play Frameworkでリクエストデータの受け取り方を完全解説|Java初心者向けコントローラ入門