この章では、Oracle Service Bus開発Mavenプラグインを使用してService Busプロジェクトを構築および管理する方法を説明します。Oracle Service Bus開発Mavenプラグインでは、Maven環境でのService Busプロジェクトのパッケージ化とデプロイが行えます。
この章の内容は次のとおりです。
Oracle Fusion MiddlewareでのMavenの使用方法の詳細は、『Oracle Fusion Middleware継続的インテグレーションによるアプリケーションの開発』を参照してください。アプリケーションとプロジェクトを構築するためのMavenのインストールと使用方法の詳細は、http://maven.apache.org/users/index.html
を参照してください。
Mavenは、ランタイム・プロジェクトを作成および管理するビルド自動化ツールです。Oracle Service Bus開発Mavenプラグインでは、Service Busプロジェクトおよびアプリケーションの要件に固有のMavenゴールを提供します。これを使用して、Service Busプロジェクトやリソースをパッケージ化したり、そのパッケージを実行中のサーバーにデプロイするなどのタスクを実行できます。
ライフサイクル・フェーズは、Maven POMファイルにゴール実行の順序付けを行います。ゴールは固有のタスクで、1つ以上のフェーズにマップできます。Oracle Service Bus開発Mavenプラグインは、ライフサイクル・フェーズを通してService Busプロジェクトおよびアプリケーションを構築および管理するための、Service Busプロジェクト固有の標準Mavenゴールと組み合せて使用できるゴールを提供します。
Service Busはpackage
およびdeploy
の2つのカスタム・ゴールを提供します。これらのゴールの構文およびパラメータの詳細は、「Service Bus開発Mavenプラグインのゴール」を参照してください。表60-1には、Service BusのデフォルトMavenライフサイクルのフェーズおよび各フェーズにマッピングされるゴールを示します。同じライフサイクル・フェーズに複数のゴールをマップした場合は、通常、リストした順序で実行されます。
表60-1 Service BusのMavenライフサイクルのフェーズ
フェーズ | 説明 |
---|---|
package |
Service Busプロジェクト・リソースを配布可能な形式のsbar (Service Busアーカイブ・ファイル)でパッケージ化します。 |
pre-integration-test |
パッケージを処理して、必要に応じて統合テストを実行できる環境にデプロイします。 |
install |
ローカルで他のプロジェクトにおける依存関係として使用するために、パッケージをローカル・リポジトリにインストールします。Service Busはこのフェーズに |
MavenプロジェクトはPOMファイルによって定義され、プロジェクトのアーティファクト、使用するプラグイン、継承および他のアーティファクト(Service Busプロジェクトの構築に必要なシステム・リソースなど)の依存性について説明します。Archetypeは、特定のタイプのプロジェクトを作成するためのテンプレートです。Service Busは、Service Busプロジェクト向けとService Busシステム・リソース向けの2つの異なるArchetypeを提供します。
Service BusプロジェクトのArchetypeはcom.oracle.servicebus.archetype:oracle-servicebus-project:12.1.3-0-0
という名前です。次のようなArchetypeで定義されます。
<groupId>com.oracle.servicebus.archetype</groupId> <artifactId>oracle-servicebus-project</artifactId> <version>12.1.3-0-0</version> <name>Oracle Service Bus - Project Archetype</name>
Service Busシステム・リソースのArchetypeはcom.oracle.servicebus.archetype:oracle-servicebus-system:12.1.3-0-0
という名前です。次のようなArchetypeで定義されます。
<groupId>com.oracle.servicebus.archetype</groupId> <artifactId>oracle-servicebus-system</artifactId> <version>12.1.3-0-0</version> <name>Oracle Service Bus - System Resources Archetype</name>
Maven 3.0.5のディストリビューションは、Oracle Fusion Middlewareに付属しており、次の場所にあります。
Middleware_Home/Oracle_Home/oracle_common/modules/org.apache.maven_3.0.5
Oracle Fusion Middlewareに対するMavenのインストールおよび構成方法の詳細は、『Oracle Fusion Middleware継続的インテグレーションによるアプリケーションの開発』のビルドの自動化および依存性の管理のためのMavenのインストールおよび構成に関する項を参照してください。第5.1項「Mavenディストリビューションの設定」および第5.2項「Maven設定のカスタマイズ」の設定手順に従ってください。
Oracle Service Bus開発Mavenプラグインは、次の場所にインストールされます。
Service_Bus_Home/plugins/maven
oracle-servicebus-plugin
プラグインは、組込み済JARファイルとそれに付随するPOMファイルとして提供されます。Maven同期プラグインは、Oracleホームからローカルまたは共有Mavenリポジトリに移入するために使用します。これにはService Busプラグインが含まれます。同期プラグインのインストールと実行に関する詳細および全手順については、『継続的インテグレーションによるアプリケーションの開発』のMavenリポジトリ・マネージャの移入に関する項を参照してください。次のステップには、該当するガイドのより詳細なセクションへのリンクが含まれます。
Oracle Service Bus開発Mavenプラグインを構成するには:
Mavenオンライン・ヘルプでは、ゴールとその関連コマンドのリストが提供されます。オンライン・ヘルプにアクセスするには、help
プラグインのdescribe
ゴールを使用します。たとえば、packageゴールのオンライン・ヘルプを取得するには、次のコマンドを入力します。
mvn help:describe -Ddetail -Dcmd=com.oracle.servicebus.plugin:oracle-servicebus-plugin:package
詳細は、Apacheヘルプ・プラグインdescribeゴールのドキュメントを参照してください。
MavenプロジェクトのPOMファイルを介して、またはコマンド行から、Mavenゴールを起動します。推奨される方法は、Maven POMファイルの使用で、これは、Service BusプロジェクトおよびService Busアプリケーションの両方に向けて作成できます。
JDeveloperでのMavenの使用については、『Oracle JDeveloperによるアプリケーションの開発』のApache Mavenによるビルドおよび実行に関する項を参照してください。
Service BuプロジェクトをJDeveloperで作成すると、そのプロジェクトのPOMファイルが自動的に作成されます。JDeveloperを使用して、Service BusプロジェクトのPOMファイルを手動で作成することもできます。
JDeveloperでService BusプロジェクトのPOMファイルを生成するには:
JDeveloperで、またはコマンド行から、Service BusプロジェクトのArchetypeからのプロジェクトのPOMファイルを生成できます。Archetypeは、Mavenプロジェクトを作成するためのテンプレートです。
JDeveloperでArchetypeからのService BusプロジェクトのPOMファイルを生成するには:
JDeveloperで、またはコマンド行から、Service BusシステムのArchetypeからのService Busシステム・リソースのPOMファイルを生成できます。Archetypeは、Mavenプロジェクトを作成するためのテンプレートです。
JDeveloperでArchetypeからのService Busシステム・リソースのPOMファイルを生成するには:
コマンド行からPOMファイルを生成する場合、次のパラメータを使用してプロジェクトを構成します。
パラメータ | 説明 |
---|---|
|
使用するArchetypeのグループID。Service Busの場合は |
|
使用するArchetypeのアーティファクトID。Service Busプロジェクトの場合は |
|
使用するArchetypeのバージョン。現行バージョンは |
|
使用するMavenリポジトリ。 |
|
構築するプロジェクトのグループID。 |
|
構築するプロジェクトのアーティファクトID。 |
|
構築するプロジェクトのバージョン |
Oracle Service Bus開発Mavenプラグインでは、次の項で説明するService Bus固有の2つのゴールを提供します。
完全な名前
com.oracle.servicebus.plugin:oracle-servicebus-plugin:package
説明
packageゴールは、POMファイルに関連付けられたリソースから構成JARファイルを作成し、そのリソースを.sbarファイルと呼ばれるService Bus固有のアーカイブ・ファイルにパッケージ化します。デフォルトでMavenプラグインは、パッケージ化されるリソースはプロジェクト・リソースであることを前提としていますが、Service Busアプリケーションにはプロジェクト間で共有されているシステム・リソースも含めることができます。システム・リソースはプロジェクト・リソースとは異なる方法でパッケージ化されるため、システム・リソースをパッケージ化する場合は、system
フラグをtrueに設定する必要があります。
Mavenプラグインはオフライン・エクスポート(構成JAR)ツールを使用してService Busリソースをパッケージ化します。エクスポート・ツールによって作成された一時ファイルは、project
/.data/maven/configjar
に置かれます。エクスポート・ツールの設定は、Mavenプロジェクト・コンテキストから導出されます。プロジェクト・リソースをパッケージ化する場合、Service Busはプロジェクト・レベルでエクスポートを実行します。システム・リソースをパッケージ化する場合、Service Busはリソース・レベルでエクスポートを実行します。デフォルトの拡張子マッピングが使用されます。詳細は、「Service Bus構成のオフラインでのエクスポート」を参照してください。エクスポート・ツールはProject_Home
/.maven/configjar/configjar.log
にあるログ・ファイルに情報を書き込みます。
Service Busリソースを含むディレクトリには、多くの場合、生成済パッケージから除外したい追加のファイルが含まれています。たとえば、バージョニング・システムで使用するメタデータ・ファイルを除外できます。SBARファイルの生成時にこれらのファイルが含まれないように、除外リストを定義できます。デフォルトでは、servicebus.sboverview
、pom.xml
、.settings/
および.data/
のファイルおよびフォルダがプロジェクトのArchetypeから除外されます。システムのArchetypeの場合、pom.xml
および.data/
が除外されます。
パッケージング中に発生する検証エラーは報告されず、検証エラーが発生しても、パッケージ化は失敗しません。
パラメータ
パッケージ処理をカスタマイズするには、次のパラメータを使用します。
表60-2 servicebus:packageゴールのパラメータ
名前 | タイプ | 説明 |
---|---|---|
|
|
Oracle Fusion Middlewareホーム・ディレクトリの場所を指定します。この値は、式として指定できます。 |
|
|
パッケージング化されるリソースが、Service Busアプリケーション内で複数のプロジェクトに共有されているシステム・リソースかどうかを指定します。デフォルト値はfalseです。システム・リソースをパッケージ化する場合は、この値をtrueに設定する必要があります。 |
|
|
プロジェクトから除外するファイルのリストを指定します。バージョニング・システムのファイルなどを除外する場合に使用します。 |
完全な名前
com.oracle.servicebus.plugin:oracle-servicebus-plugin:deploy
説明
deployゴールは、Service Busプロジェクトを、実行中のサーバーにデプロイします。このゴールは、Service Busデプロイメント形式のSBARをサポートします。これは、ローカル・サーバー・インストールを必要としません。デフォルトでは、プロジェクトをデプロイしても、環境値に更新は適用されません。環境値を更新する場合は、新しい環境値を持つ構成ファイルを作成し、deploy
の実行時にその構成ファイルを指定できます。
各デプロイメントで、新しいセッションが作成され、次の形式で名前が付けられます。
Service_Bus_Maven-artifactId-currentTime
現在の時刻は、ミリ秒単位まで設定されます。
Service BusプロジェクトをMavenを使用してパッケージ化すると、Service Busによって構成JARファイルが生成され、これは、deployゴールを使用して実行中のサーバーにデプロイできます。Service Busではデフォルトのインポート・プランを使用しますが、これには依存関係が含まれ、環境変数、セキュリティ設定または資格証明は保持されません。
リソースのインポートに失敗すると、情報がログに記録され、ゴールの実行は失敗します。すべてのリソースのインポートに成功し、構成ファイルを指定した場合、Service Busは新しい環境変数を適用します。デプロイメントが正常に完了すると(つまり、リソースで競合が一切ない場合)、Service Busによってセッションがアクティブ化されます。失敗や競合があった場合、Service Busは変更のアクティブ化や新しい環境変数の適用を行いませんが、セッションは保持されるため、失敗を調査できます。
パラメータ
デプロイメント処理をカスタマイズするには、次のパラメータを使用します。式を使用して、任意のパラメータを指定できます。
表60-3 servicebus:deployゴールのパラメータ
名前 | タイプ | 説明 |
---|---|---|
|
|
管理サーバーがリスニングするアドレスとポートを指定します。 デフォルト値: |
|
|
管理ユーザー名を指定します。 |
|
|
管理パスワードを指定します。 |
|
|
Service Busアーカイブをデプロイしている環境の環境値を更新する、Service Bus構成ファイルの場所および名前を指定します。 |
Service Busには、Service Busアプリケーション向け、Service Busプロジェクト向け、Service Busシステム・リソース向けの3つの異なるタイプのPOMファイルがあります。どれを使用するかは、操作しているリソースによって異なります。
例 - Service BusアプリケーションのPOMファイル
Service BusアプリケーションのPOMファイルの例を次に示します。これは、個別のプロジェクトPOMファイルではなく、単一のPOMファイルに対するMavenの実行が可能となる、アプリケーションでコンパイルするすべてのプロジェクトをリストした集約ファイルです。Mavenは、アプリケーションPOMファイルにリストされた順序で、モジュールを実行します。
<?xml version="1.0" encoding="UTF-8"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <groupId>OrdersAndPayments</groupId> <artifactId>OrdersAndPayments</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>System</module> <module>Orders</module> <module>Payments</module> </modules> </project>
例 - Service BusプロジェクトのPOMファイル
Service BusプロジェクトのPOMファイルの例を次に示します。このファイルは、Mavenリポジトリの親POMproject-12.1.3
から継承します。継承によって、プロジェクトのPOMファイルはさらに合理化されます。
Systemは、Service Busでシステム・リソースのために予約されたプロジェクト名です。これは、プロジェクトArchetypeを使用するときにアーティファクトIDとして使用しないでください。
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.oracle.servicebus</groupId> <artifactId>project</artifactId> <version>12.1.3.0.0</version> </parent> <groupId>OrdersAndPayments</groupId> <artifactId>Orders</artifactId> <version>1.0-SNAPSHOT</version> <packaging>sbar</packaging> <dependencies> <dependency> <groupId>OrdersAndPayments</groupId> <artifactId>System</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> </project>
例 - Service Busシステム・リソースのPOMファイル
Service Busシステム・リソースのPOMファイルの例を次に示します。このファイルは、Mavenリポジトリの親POMsystem-12.1.3
から継承します。継承によって、システム・リソースのPOMファイルはさらに合理化されます。
Systemは、Service Busでシステム・リソースのために予約されたプロジェクト名です。システムArchetypeを使用するときは、アーティファクトIDをSystemにする必要があります。
<?xml version="1.0" encoding="UTF-8"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.oracle.servicebus</groupId> <artifactId>system</artifactId> <version>12.1.3.0.0</version> </parent> <groupId>OrdersAndPayments</groupId> <artifactId>System</artifactId> <version>1.0</version> <packaging>sbar</packaging> </project>