Mule アプリケーションをパッケージする

Unresolved include directive in modules/ROOT/pages/package-a-mule-application.adoc - include::mule-runtime::partial$mmp-concept.adoc[]

Mule アプリケーションは Mule Maven プラグイン (コマンドライン) または Anypoint Studio を使用してパッケージできます。この手順についての詳細は、​「Studio からのプロジェクトのエクスポート」​を参照してください。

Mule アプリケーションはデプロイ可能な JAR ファイルにパッケージされ、このパッケージを後から実行中の Mule Runtime Engine にデプロイできます。パッケージには、アプリケーションによって必要とされる JAR ファイルであるかそのプラグインによって必要とされる JAR ファイルであるかに関係なく、アプリケーションおよびそのすべての連動関係が含まれます。

すべての Mule アプリケーションには 2 つの記述子があります。これらの記述子により、Mule アプリケーションの連動関係が定義されます。

  • mule-artifact.json​ ファイル。
    このファイルは、アプリケーションがどのように構成されるかを記述します。

  • pom.xml​ ファイル。
    このファイルは、パッケージが正常に機能するために必要なすべての連動関係を記述します。

互換性

Mule 4 アプリケーションは次の Anypoint Studio と Mule Maven プラグインバージョンと互換性があります。

  • Anypoint Studio 7.x

  • Mule Maven プラグイン 3.x

前提条件

Mule アプリケーション構造リファレンス

デザインタイムに、Mule アプリケーションには少なくとも次の 3 つの基本的なコンポーネントが必要です。

コンポーネント 説明

src

フォルダー

アプリケーションの本番ソースコードおよびテストのソースディレクトリ。
このフォルダーについては、下記のリファレンスを参照してください。

pom.xml

Descriptor (記述子)

Mule アプリケーションの POM ファイル。
このファイルは、アプリケーションのすべての必須の連動関係を記述します。

mule-artifact.json

Descriptor (記述子)

Mule アプリケーションの mule-artifact ファイル。
このファイルは、Mule アプリケーションがどのように構成されるかを記述します。

これらの 3 つのコンポーネントは必須です。このいずれか 1 つが欠落すると、プロジェクトをデプロイ可能な JAR ファイルにパッケージできません。
さらに、パッケージプロセスでは Mule アプリケーションのルートフォルダーにある他のディレクトリまたはファイルが考慮されません。

ソースディレクトリリファレンス

src​ ディレクトリには ​main​ と ​test​ の 2 つの主要なフォルダーがあります。
プラグインはアプリケーションをパッケージするときに ​src​ 内の他のディレクトリを考慮しません。

src/main

src/main はアプリケーションのすべての本番ソースコードのルートフォルダーです。

フォルダー フォルダー種別 説明

src/main/mule

ソース

Mule 設定ファイルのルートフォルダー。
Java パッケージの形式で、ネストされたフォルダーを含むことができます。

このフォルダーは必須です。

src/main/resources

resource (リソース)

XML、JSON、プロパティファイルなどのアプリケーションリソースが含まれます。
ここに配置された Jar ファイルはアプリケーションクラスローダーによって読み込まれますが、プレーンファイルリソースとして読み込まれます。

パッケージプロセスにより、​src/main/mule​ および ​src/main/resources​ 内のすべてのファイルがバイナリパッケージのルートディレクトリに送信されます。
src/main/mule​ 内のネストされたフォルダーは、バイナリパッケージのルートディレクトリ内のディレクトリとして保持されます。

src/test

src/test はアプリケーションのすべてのテストソースコードのルートフォルダーです。

フォルダー フォルダー種別 説明

src/test/java

ソース

アプリケーションのカスタム Java コードを検証するために使用されるテストクラスのルートフォルダーです。
通常の Java アプリケーションの規則に従います。

src/test/munit

ソース

MUnit ソースコードが含まれます。
パッケージの形式で、ネストされたフォルダーを含むことができます。

src/test/resources

resource (リソース)

XML、JSON、プロパティファイルなどのリソースが含まれます。
このフォルダーには、​mule-config.xml​ で参照されるメタデータを記述するファイルも含まれます。

Mule アプリケーションをパッケージする

プロジェクトのフォルダーのコマンドラインから、パッケージゴールを実行します。

mvn clean package

このプラグインはアプリケーションをプロジェクトのフォルダー内の対象ディレクトリにパッケージし、デプロイ可能な JAR ファイルを作成します。

pom.xml​ に連動関係バージョンの競合がある場合、最新バージョンが使用されます。

Anypoint Studio にインポートするアプリケーションパッケージの作成

Anypoint Studio にインポートできる JAR ファイルを生成するには、​-DattachMuleSources​ パラメーターを使用してアプリケーションをパッケージ化し、デプロイ可能ファイルをオープン Mule プロジェクトとしてワークスペースに再インポートするために Studio で必要とされるソースファイルおよびメタデータを含める必要があります。

プロジェクトのフォルダーのコマンドラインから、次のコマンドを実行します。

mvn clean package -DattachMuleSources

-DattachMuleSources​ パラメーターにより、デザインタイムにアプリケーション構造の正確なコピーを使用して ​META-INF​ ディレクトリ内に ​mule-src​ フォルダーを追加するようプラグインに指示されます。このオプションにより、Mule Runtime Engine にデプロイできる機能する Mule のデプロイ可能なアーカイブファイルを作成するために必要なプロジェクトモジュールおよび連動関係もパッケージ化されます。

軽量パッケージの作成

Mule Runtime Engine で Mule アプリケーションを実行するために必要な実際のモジュールおよび外部連動関係のバンドルをスキップして、Anypoint Studio に JAR パッケージをインポートし直すために必要なソースファイルおよびメタデータのみの軽量パッケージを作成できます。

プロジェクトのフォルダーのコマンドラインから、次のコマンドを実行します。

mvn clean package -DlightweightPackage

このパラメーターを指定すると、プラグインによって Mule アプリケーションの ​pom.xml​ ファイルで宣言された連動関係を含まない軽量 JAR ファイルが作成されます。この JAR ファイルを Mule Runtime Engine にデプロイすることはできず、Mule アプリケーションのソースファイルのみをアーカイブすることができます。この Maven パラメーターの結果は、Mule アプリケーションを Anypoint Studio からエクスポートするときに ​[Include Project Modules and Dependencies (プロジェクトモジュールと連動関係を含める)]​ をオフにするのと同じです。

複数のパラメーターの指定

パラメーターを結合して、Anypoint Studio にパッケージをインポートし直すためのソースファイルおよびメタデータも含まれる軽量 Mule アプリケーションパッケージを作成することもできます。

プロジェクトのフォルダーのコマンドラインから、次のコマンドを実行します。

mvn clean package -DattachMuleSources -DlightweightPackage

アプリケーションパッケージからファイルを除外する

アプリケーションをパッケージするときに、特定のファイルまたはディレクトリを除外できます。プロジェクトのルートディレクトリで ​_muleExclude​ ファイルを作成し、そのコンテンツを編集して除外ルールを設定します。

_muleExclude​ ファイルの各行で、 glob のパターン​に従うルールが指定されます。

たとえば、2 つの除外ルールが含まれる次の ​_muleExclude​ ファイルを考えます。

fileToBeExcluded.json
**/src/main/resources/local_directory
  • 最初の行は、すべてのディレクトリ内の ​fileToBeExcluded.json​ という名前のすべてのファイルがアプリケーションパッケージから除外されることを示しています。

  • 2 行目は、​src/main/resources​ にある ​local_directory​ という名前のディレクトリのみがパッケージから除外されることを示しています。
    **/src/main/resources/local_directory​ が ​local_directory​ に置き換えられている場合、プロジェクト内の ​local_directory​ という名前のすべてのディレクトリがアプリケーションパッケージから除外されます。