カテゴリ: Jakarta EE 更新日: 2026/02/15

Maven Shade PluginでUber-JARを作成!Jakarta EE初心者向け完全ガイド

Maven Shade Pluginを使ったUber-JAR作成
Maven Shade Pluginを使ったUber-JAR作成

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

生徒

「Jakarta EEのアプリケーションをひとつのJARにまとめる方法ってありますか?」

先生

「ありますよ。Maven Shade Pluginを使えば、全ての依存ライブラリをひとつのJARにまとめた“Uber-JAR”を作ることができます。」

生徒

「それを使うと、Jakarta EEのWebアプリケーションも簡単に実行できるんですか?」

先生

「そのとおり。依存関係の競合解決や、実行可能JARの作成も可能です。それでは、使い方を詳しく見ていきましょう。」

1. Maven Shade Pluginとは?

1. Maven Shade Pluginとは?
1. Maven Shade Pluginとは?

Maven Shade Pluginは、Apache Mavenで使用できる公式プラグインの一つで、複数のJARファイル(依存ライブラリなど)を一つにまとめた実行可能なUber-JARを作成するために使われます。

Jakarta EEのようなJava EE仕様に準拠したアプリケーションでも、自己完結型のJARを作ることで、実行環境への依存を減らし、移植性の高いアプリケーションに仕上げることができます。

2. Uber-JARのメリットと利用シーン

2. Uber-JARのメリットと利用シーン
2. Uber-JARのメリットと利用シーン

Uber-JAR(Fat JAR)は、アプリケーション本体と全ての依存ライブラリを含んだJARファイルです。これにより、次のようなメリットがあります。

  • Jakarta EEの依存関係を気にせずに単体実行できる
  • Java環境さえあればどこでも動く
  • Dockerなどと組み合わせてデプロイしやすい
  • シンプルなjava -jarコマンドで実行可能

特に、軽量なJakarta EEアプリケーションや、マイクロサービス形式での展開に最適です。

3. Maven Shade Pluginの導入方法

3. Maven Shade Pluginの導入方法
3. Maven Shade Pluginの導入方法

まずは、Jakarta EEプロジェクトのpom.xmlにMaven Shade Pluginを追加します。以下のように設定することで、パッケージ時にUber-JARを生成できます。


<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.2.4</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <createDependencyReducedPom>false</createDependencyReducedPom>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>com.example.Main</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

<mainClass>には、Jakarta EEアプリケーションのエントリーポイントを指定しましょう。

4. Jakarta EEとUber-JARの相性

4. Jakarta EEとUber-JARの相性
4. Jakarta EEとUber-JARの相性

Jakarta EEでは本来、WARやEARの形式でアプリケーションをデプロイしますが、Payara MicroやWildFly Bootable JARのように、自己完結型の実行環境を持つ軽量サーバーを使えば、Uber-JAR化の恩恵を受けられます。

Shade Pluginを使って依存JARをまとめておけば、Jakarta EE用のアプリケーションサーバーに対する事前構成を気にせず、素早く実行環境を構築できます。

5. Uber-JARのビルドと実行手順

5. Uber-JARのビルドと実行手順
5. Uber-JARのビルドと実行手順

Uber-JARの作成はとても簡単で、以下のコマンド一つで行えます。


mvn clean package

すると、targetディレクトリにxxx-shaded.jarのようなファイルが生成されます。

実行は以下のようにシンプルです。


java -jar target/myapp-shaded.jar

これだけで、Jakarta EEの実行環境込みのアプリケーションがすぐ起動します。

6. 複数ライブラリの競合に注意

6. 複数ライブラリの競合に注意
6. 複数ライブラリの競合に注意

Uber-JAR化では、複数のライブラリに同一のリソースファイルやクラスが存在することで、依存関係の衝突が起こることがあります。

Maven Shade Pluginでは、そのような衝突を解消するためにrelocationsを使うことができます。例えば、ライブラリのパッケージ名を変更して衝突を回避できます。


<relocations>
    <relocation>
        <pattern>com.google.common</pattern>
        <shadedPattern>shaded.com.google.common</shadedPattern>
    </relocation>
</relocations>

これにより、Jakarta EEプロジェクトでも安全に外部ライブラリを含めたUber-JARを作成できます。

7. Maven Shade Pluginのよくある設定例

7. Maven Shade Pluginのよくある設定例
7. Maven Shade Pluginのよくある設定例

Jakarta EEでの使用例として、Payara Microと組み合わせる場合の設定も紹介します。


<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.2.4</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <artifactSet>
                    <includes>
                        <include>fish.payara.micro:payara-micro</include>
                    </includes>
                </artifactSet>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>fish.payara.micro.PayaraMicro</mainClass>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>

このように、Payara Microを含めた自己実行可能なJakarta EEアプリケーションを構築できます。

8. Maven Shade PluginとJakarta EEの今後

8. Maven Shade PluginとJakarta EEの今後
8. Maven Shade PluginとJakarta EEの今後

近年のクラウドネイティブな流れでは、WARやEARよりも、軽量でポータブルなUber-JARのニーズが増しています。特にJakarta EEを使ったマイクロサービス開発では、Maven Shade Pluginを活用することで、コンテナ対応やCI/CDの自動化にも柔軟に対応できます。

Jakarta EEアプリケーションのビルド自動化や、ローカル実行テスト環境構築にも大きく貢献してくれるツールです。

カテゴリの一覧へ
新着記事
New1
Play Framework
Play Frameworkの必須入力チェック完全ガイド!初心者でもわかるフォームバリデーションの実装方法
New2
Jakarta EE
Jakarta EEのJakarta Faces(JSF)ライフサイクルを図解で徹底解説 初心者向けUI開発入門
New3
Play Framework
Play Frameworkのバリデーション入門!初心者でもわかる入力値検証の基本と考え方
New4
Play Framework
Play Frameworkでできること・できないことを徹底解説!初心者でもわかる特徴と活用方法
人気記事
No.1
Java&Spring記事人気No1
Jakarta EE
Jakarta サーブレットのdoGetとdoPostの違いと使い分けを徹底解説!初心者でもわかるHTTPリクエスト処理
No.2
Java&Spring記事人気No2
Jakarta EE
Jakarta サーブレットのHttpServletRequestを徹底解説!初心者でもわかる基本操作と使い方
No.3
Java&Spring記事人気No3
Play Framework
Play FrameworkのForm APIを完全解説!初心者でもわかるフォーム処理の流れ
No.4
Java&Spring記事人気No4
Jakarta EE
Jakarta EEのリリースサイクルとバージョンの進化をやさしく解説!
No.5
Java&Spring記事人気No5
Play Framework
Play Frameworkで学ぶ単純なフォーム作成方法!初心者でもわかる名前・メールアドレス入力
No.6
Java&Spring記事人気No6
Play Framework
Play Frameworkのフォーム処理を完全ガイド!初心者でもわかる送信の仕組み
No.7
Java&Spring記事人気No7
Play Framework
Play FrameworkのビューとSEOを完全理解!Twirlで検索上位を狙う設計術
No.8
Java&Spring記事人気No8
Jakarta EE
Jakarta EE開発環境でのローカルとクラウド環境の使い分けを徹底解説|初心者向けガイド