Jakarta EEでマルチモジュールプロジェクトを構成する方法|MavenやGradleでの実践例
生徒
「Jakarta EEで開発を始めたいんですが、マルチモジュールプロジェクトって何ですか?」
先生
「良いテーマですね。Jakarta EEのようなエンタープライズアプリケーションでは、複数の機能を役割ごとに分割したマルチモジュール構成が一般的なんですよ。」
生徒
「機能ごとに分けると何かメリットがあるんですか?」
先生
「はい、保守性や再利用性が高まり、大規模なJakarta EEアプリでも効率的に開発・管理できるようになります。では実際に作り方を見ていきましょう!」
1. Jakarta EEにおけるマルチモジュール構成とは
Jakarta EEのようなJavaエンタープライズアプリケーションでは、プロジェクトを複数のモジュール(サブプロジェクト)に分割して構成することがよくあります。これを「マルチモジュールプロジェクト」と呼びます。代表的なビルドツールとしては、MavenやGradleが使われます。
例えば、以下のようにモジュールを分けることで、機能ごとの分離が明確になり、Jakarta ServletやJakarta REST、EJB、JPAなどのコンポーネントを独立して管理しやすくなります。
- webモジュール:Jakarta ServletやJSPを管理
- serviceモジュール:ビジネスロジックを管理
- domainモジュール:エンティティクラスやDTOなどを定義
- persistenceモジュール:JPAやデータベースとの連携部分を担当
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でのマルチモジュールプロジェクト構成
GradleでもMavenと同様に、プロジェクトのルートディレクトリにsettings.gradleを定義し、サブプロジェクトを登録します。
rootProject.name = 'my-jakartaee-app'
include 'domain', 'service', 'web'
それぞれのモジュールでbuild.gradleを記述し、依存関係を明示的に設定します。例えば、serviceモジュールではdomainに依存する形になります。
dependencies {
implementation project(':domain')
}
4. Jakarta EEのモジュール構成のポイント
Jakarta EEでマルチモジュールプロジェクトを構成する際には、次のような設計の工夫が重要です。
- 依存関係の一方向化:web → service → domain というように、依存は一方向に設計しましょう。
- 共通ライブラリの管理:ログ出力、ユーティリティクラスなどを共通モジュールにまとめると再利用しやすくなります。
- 分離性と責務の明確化:各モジュールが独立して単体テストしやすくなるように設計するのがポイントです。
こうした構成を採用することで、Jakarta EEアプリケーションは開発効率・品質・保守性が格段に向上します。
5. Jakarta EEとマルチモジュールの組み合わせがもたらすメリット
Jakarta EEでは、多層アーキテクチャが前提となるケースが多いため、マルチモジュール構成との相性が抜群です。以下のようなメリットがあります。
- 機能追加や変更時の影響範囲を限定できる
- CI/CDでのビルド速度を改善できる(差分ビルド)
- 単体テストの実行やデプロイ単位の管理が容易になる
例えば、Jakarta RESTful Web Services(JAX-RS)をwebモジュールに、JPAエンティティはdomainモジュールに、それぞれ分けることで、関心の分離を実現できます。
6. Jakarta EEで使える代表的なビルドツールと選び方
Jakarta EEのマルチモジュール構成で使われる代表的なビルドツールは以下のとおりです。
- Maven:伝統的で安定性があり、XML構成が分かりやすい
- Gradle:記述が簡潔で高速ビルドに対応、Kotlin DSLも使える
初心者やJakarta EEのドキュメントに忠実に進めたい方にはMavenが向いています。より柔軟性を重視したい場合はGradleを選ぶのも良いでしょう。
7. Jakarta EEとIDE(EclipseやIntelliJ)でのマルチモジュール操作
Eclipse IDEやIntelliJ IDEAでは、Jakarta EEのマルチモジュール構成に対応しています。Eclipseでは「Working Sets」機能を使うと見やすく整理できますし、IntelliJではGradle/Mavenの連携がシームレスに行えます。
どちらのIDEも、モジュール単位でのデプロイ、デバッグ、テストが可能です。特にPayaraやWildFlyなどのJakarta EE対応アプリケーションサーバと連携することで、実運用に近い開発体験が得られます。