9 Javaプロジェクトのビルド
「メイク」操作によって、最後にコンパイルされてから変更されたソース・ファイルや依存性が変更されたソース・ファイルをコンパイルします。一方、「再ビルド」操作の場合、ソース・ファイルを無条件にコンパイルします。「メイク」は、個々のソース・ファイル、作業セット、またはパッケージ、プロジェクトなどのコンテナに対してメイクを起動できます。
Antには多数の組込みタスクがあり、Javaアプリケーションのコンパイル、アセンブル、テストおよび実行が可能です。プロジェクトをビルドするには、XMLで作成されたAntビルドファイルを使用します。各ビルドファイルには、1つのプロジェクトと少なくとも1つ(デフォルト)のターゲットが含まれています。
MavenサポートはAntサポートと非常によく似ています。JavaプロジェクトをWebLogicサーバーにデプロイするように、POMのWebLogic Mavenプラグインを構成できます。
この章の内容は次のとおりです。
Javaプロジェクトのビルドについて
「再ビルド」を使用して変更に関係なくソース・ファイルをコンパイルするか、「メイク」を使用して、変更されているソース・ファイルまたは変更のある依存性を持つソース・ファイルをコンパイルします。プロジェクト・オブジェクト・モデル、プロジェクト・ライフサイクル、依存性管理システムおよびプラグインのセットを使用するAntまたはMavenを使用して、Javaプロジェクトをビルドします。
JDeveloperは、ソース・ファイルを無条件でコンパイルする「再ビルド」操作をサポートしています。最後にコンパイルされてから変更されたソース・ファイル、または変更された依存性のあるソース・ファイルをコンパイルするには、メイク・コマンドを使用します。「プロジェクト・プロパティ」ダイアログでオプションを設定すると、コンパイルするプロジェクトごとにJavaコンパイラを構成できます。
Antには、アプリケーションをビルドするもう1つの方法があります。AntをJDeveloperのメイン・メニューから起動し、現在のプロジェクトのプロジェクト・ビルドファイルに定義されているターゲットをビルドできます。AntはJDeveloperに統合されています。XMLソース・エディタを使用して、12cアプリケーションおよびプロジェクト向けAntビルドファイルの追加または作成を行ったり、それらを編集したりすることができます。
Mavenはプロジェクト管理ツールであり、このツールには、一貫した自動化ビルド、プロジェクト・オブジェクト・モデル(POM)によるプロジェクトのテストとデプロイメントのプロセス、プロジェクト・ライフサイクル、依存性管理システム、複数のプロジェクトで共有可能なプラグインのセットが用意されています。依存性のリストやユニット・テスト・レポートなどの多様なプロジェクト情報をMavenから取得できます。
メイク・コマンドおよび再ビルド・コマンドによるビルド
表に示す「メイク」コマンドおよび「再ビルド」コマンドは、JDeveloperでプロジェクトをコンパイルするための標準操作を実行します。
表9-1に示す「メイク」コマンドと「再ビルド」コマンドは、JDeveloperでプロジェクトをコンパイルするための標準操作を実行します。
表9-1 メイク・コマンドおよび再ビルド・コマンド
コマンド | 説明 |
---|---|
|
プロジェクトが依存しているすべてのプロジェクトを(再帰的に)メイクしてから、プロジェクトをメイクします。 |
|
プロジェクトをメイクしますが、そのプロジェクトが依存するプロジェクトはメイクされません。 |
|
ワーキング・セットにあるすべてのプロジェクトをメイクします。 |
|
プロジェクトが依存しているすべてのプロジェクトを(再帰的に)再ビルドしてから、プロジェクトを再ビルドします。 |
|
プロジェクトを再ビルドしますが、そのプロジェクトが依存するプロジェクトは再ビルドされません。 |
|
ワーキング・セットにあるすべてのプロジェクトを再ビルドします。 |
|
すべてのプロジェクトをメイクします。 |
|
すべてのプロジェクトをクリーンします。 |
|
プロジェクトが依存しているすべてのプロジェクトを(再帰的に)クリーンしてから、プロジェクトをメイクします。 |
コンパイラ・プリファレンスの設定方法
「プリファレンス」ダイアログの「コンパイラ」ページを使用して、コンパイラによるコードのビルド方法のオプションを設定します。デプロイメント・プリファレンスを構成する手順を使用してください。
「プリファレンス」ダイアログの「コンパイラ」ページでコンパイラ・オプションを設定できます。
デプロイメント設定を構成するには:
- メイン・メニューから「ツール」→「プリファレンス」を選択します。
- 「コンパイラ」ノードを選択します。必要に応じて、コンパイラ・オプションを構成します。詳細は、「ヘルプ」をクリックします。
- 「OK」をクリックします。
メイクによるコンパイル
個別のソース・ファイル、ワーキング・セットまたはコンテナで「メイク」操作を起動して、変更のあるソース・ファイルまたは依存性が変更されているソース・ファイルをコンパイルします。オプションからステップを使用して、「メイク」操作を開始します。
「メイク」操作によって、最後にコンパイルされてから変更されたソース・ファイルや依存性が変更されたソース・ファイルをコンパイルします。一方、「再ビルド」操作の場合、ソース・ファイルを無条件にコンパイルします。「メイク」は、個々のソース・ファイル、作業セット、またはパッケージ、プロジェクトおよびワークスペースなどのコンテナに対してメイクを起動できます。
より選択的にコンパイルする場合、Antビルドファイルをプロジェクトに追加したり、追加ターゲットを定義できます。また、Antを実行してこれらのターゲットをメイクすることもできます。
現在進行中のコンパイルを取り消すには、メイン・ツールバーの「ビルドの取消」アイコンをクリックします。
このアイコンをクリックすると、「コンパイラ - ログ」ウィンドウの最上部の行にエラー・メッセージが出力されます。
ソース・ファイルをメイクするには、次のいずれかを実行します。
-
ファイルのソース・エディタで右クリックして、「メイク」を選択します。
-
「アプリケーション」ウィンドウで1つ以上のプロジェクトを選択して、ツールバーの「メイク」をクリックします。
-
「アプリケーション」ウィンドウで1つ以上のプロジェクトを選択して、「ビルド」メニューから項目「メイク」を選択します。
-
「アプリケーション」ウィンドウで1つ以上のプロジェクトを選択し、右クリックして、「メイク」を選択します。
再ビルドによるコンパイル
「再ビルド」操作には条件はなく、プロジェクトまたはワークスペース内のすべてのソース・ファイルをコンパイルします。オプションからステップを使用して、「再ビルド」操作を開始します。
「再ビルド」操作によって、プロジェクトまたはワークスペース内のすべてのソース・ファイルをコンパイルします。変更されたソース・ファイルまたは依存性が変更されたソース・ファイルのみを再コンパイルする「メイク」操作とは異なり、「再ビルド」操作には、条件はありません。
より選択的にコンパイルする場合、Antビルドファイルをプロジェクトに追加したり、追加ターゲットを定義できます。また、Antを実行してこれらのターゲットをメイクすることもできます。Antには多数の組込みタスクがあり、Javaアプリケーションのコンパイル、アセンブル、テストおよび実行が可能です。
現在進行中のコンパイルを取り消すには、メイン・ツールバーの「ビルドの取消」アイコンをクリックします。このアイコンをクリックすると、「コンパイラ - ログ」ウィンドウの最上部の行にエラー・メッセージが出力されます。
ソース・ファイルを再ビルドするには、次のいずれかを実行します。
-
「アプリケーション」ウィンドウでソース・ファイルを1つ以上選択し、「再ビルド」(ファイルが1つの場合)、または「選択されたものを再ビルド」(ファイルが複数の場合)をクリックします。
-
「アプリケーション」ウィンドウで1つ以上のプロジェクトまたはワークスペースを選択し、ツールバーで「再ビルド」をクリックします。
-
「アプリケーション」ウィンドウで1つ以上のプロジェクトまたはワークスペースを選択し、「ビルド」メニューから項目「再ビルド」を選択します。
-
「アプリケーション」ウィンドウで1つ以上のプロジェクトまたはワークスペースを選択し、「再ビルド」を選択します。
依存性チェックの理解
JDeveloperでは、コードのビルド時に依存性を分析します。コンパイルの「メイク」操作には依存性チェックが含まれており、これによって相互に依存するソース・ファイルの不要なコンパイルが回避されるため、編集およびコンパイルのサイクルが高速化されます。
JDeveloperでは、ビルド時に依存性を分析することにより、コンパイルを高速かつ完全に行うことができます。依存性チェックにより、相互に依存するソース・ファイルの不要なコンパイルを減らし、編集およびコンパイルのサイクルを高速化できます。
JDeveloperを使用してコンパイルを行う際に、「メイク」を使用してコンパイルする場合は、常に依存性チェックが実行されます。「メイク」では、JDeveloper内で自動的に作成される依存性ファイルが使用されます。
コマンドラインからコンパイルする場合は、次のパラメータを指定して依存性ファイルを作成または使用します。
javac -make
<makedepfile>
アプリケーションおよびプロジェクトのコンパイル
「プロジェクト・プロパティ」からコンパイラのオプションを選択して、JDeveloperが使用するJavaコンパイラJavacのコンパイラ・オプションを設定します。Javacは、Javaソース・コードをJVMのJavaバイトコードに変換します。
JDeveloperは、Javaコンパイラ(Javac)を使用してJavaソース・コード(.java
ファイル)をJavaバイトコード(.class
ファイル)にコンパイルします。生成されるバイトコードは、Java Virtual Machine (JVM)のマシン・コードです。Javaソース・ファイルのコンパイルにより、各クラス宣言およびインタフェース宣言に対して個別のクラス・ファイルが生成されます。生成されたJavaプログラムを特定のプラットフォームで実行すると、そのJVMによってclassファイルに含まれるバイトコードが実行されます。
Javacでは、指定されたJavaファイルの他に、対応するクラス・ファイルのないインポート・ファイルがコンパイルされます。(-make
オプションを使用して)依存性チェックを指定しないかぎり、すべてのターゲットJavaファイルがコンパイルされます。「依存性チェックの理解」を参照してください。
JDeveloper内部で操作する場合、コンパイラとしてJavacが使用されます。コンパイラのオプションは、「プロジェクト・プロパティ」→「コンパイラ」→「オプション」を選択して調整できます。「コンパイラ・オプション」ページに表示される各オプションの横に説明が表示されます。
コンパイルするプロジェクトの設定方法
「プロジェクト・プロパティ」で、Javaコンパイラによるコードのビルド方法に関するオプションを設定します。コンパイル用にプロジェクト・プロパティを構成する手順を使用してください。
「プロジェクト・プロパティ」でオプションを設定すると、プロジェクトごとに、Javaコンパイラを構成できます。たとえば、コンパイラで次のようなコンパイラ・メッセージが表示されないようにする場合があります。
-
ノート: 入力ファイルの中には、未チェック操作または安全でない操作を使用するものがあります。
-
ノート: 詳細は、-Xlint:uncheckedで再コンパイルしてください。
プロジェクト・プロパティをコンパイル用に設定するには:
ノート:
コンパイル前にすべてのプロジェクト・ファイルを自動的に保存するには、「プリファレンス」ダイアログの「コンパイラ」ページでこれを指定します。
コンパイル用のネイティブ・エンコーディングの指定方法
コンパイラは、コンパイラによるマルチバイト文字の解釈方法を制御するコード体系が設定されていない場合、プラットフォームのデフォルトのネイティブ・エンコーディング・コンバータを使用します。エンコーディング・オプションを設定する手順を使用してください。
コンパイラによるマルチバイト文字の解釈方法を制御するコード体系を指定できます。指定しない場合、プラットフォームのデフォルトのネイティブ・エンコーディング・コンバータが使用されます。
テキスト文字は、様々なコード体系を使用して表現されます。これらは、Windows環境ではコード・ページ、Javaではネイティブ・エンコーディングと呼ばれます。データをあるコード体系から別のコード体系に移動する場合、変換が必要です。各体系の拡張文字セットは異なる場合があるので、変換によってデータが失われないようにする必要があります。
JDeveloperソース・エディタを含むほとんどのテキスト・エディタでは、動作しているプラットフォームのネイティブ・エンコーディングが使用されます。たとえば、日本語のWindowsではシフトJISが使用されます。ソース・コードがシフトJISを使用してエンコードされている場合、これを米語のWindows環境でコンパイルするには、ソースが正しく読み込まれるようにコンパイラに対してシフトJISエンコーディングを指定する必要があります。
JDeveloperは、現在インストールされているJ2SEに含まれている文字コード体系をサポートしています。
エンコーディング・オプションを設定するには、次のいずれかを実行します。
Java SDKでサポートされるエンコーディングの一覧は、次を参照してください。http://download.oracle.com/javase/6/docs/technotes/guides/intl/encoding.doc.html.
コマンドラインからのコンパイル
「ビルド」および「コンパイル」オプションを使用して、JDeveloper内からアプリケーションおよびプロジェクトをコンパイルするか、ojmake
およびojdeploy
ツールを使用して、コマンドラインからコンパイルします。
アプリケーション(ワークスペース)とプロジェクトをコンパイルするには、次の2つの方法があります。
-
JDeveloper内部で、アプリケーションとプロジェクトのノードに対してビルドおよびコンパイルの各オプションを使用します
-
コマンドラインから、
ojmake
およびojdeploy
を使用します。
jdeveloper/jdev/bin
ディレクトリに「ojmake」
と「ojdeploy」
の両方があります。
-
ojmake
は、デプロイメントを伴わないアプリケーションとプロジェクト、たとえばデプロイメント・プロファイルが定義されていないプロジェクトなどに対して使用できます。 -
ojdeploy
は、すべてのアプリケーションおよびプロジェクト(デプロイメントを伴うものを含む)のビルドを扱うことができます。これは、ojmake
のスーパーセットと考えられます。
ツールのヘルプは、コマンドラインでojmake
またはojdeploy
を実行するだけで表示できます。ヘルプはコンソールに表示されます。
ノート:
コマンドラインから操作する場合にはJavacを使用してJavaファイルをコンパイルできますが、Javacを手動で実行してアプリケーションとプロジェクトをビルドすることはできません。ojmake
またはojdeploy
を使用する必要があります。
ojmakeの使用方法の詳細は、「ojdeployおよびojmakeの使用方法」を参照してください。
ojdeployの使用方法の詳細は、「ojdeployの使用方法」を参照してください。
アプリケーションおよびプロジェクトのクリーン
クリーンするプロジェクトの出力場所をディレクトリとして指定し、「クリーン」コマンドを使用してクラス・ファイル、コピーされたすべてのリソース・ファイルおよび出力からデプロイされたすべてのファイルを削除し、プロジェクトまたはアプリケーションにディレクトリをデプロイします。「すべてクリーンし、アプリケーションをリフレッシュ」コマンドでは、索引ファイルやデプロイ・ファイルなどのIDEアーティファクトもクリーンされます。
クリーンを実行すると、以前のビルドのアーチファクトを削除し、新規に操作を開始できます。「クリーン」コマンドを使用して、アプリケーションまたはプロジェクトのクリーンを実行できます。このコマンドを実行すると、プロジェクトまたはアプリケーションの出力ディレクトリおよびデプロイ・ディレクトリがクリーンされます。
「クリーン」コマンドをアプリケーションまたはプロジェクトに対して実行すると、クラス・ファイル、コピーしたリソース・ファイル、およびデプロイしたファイルのすべてが削除されます。このことを実行すると、出力ディレクトリおよびデプロイ・ディレクトリに古いファイルが確実に残らないようにできます。たとえば、名前変更、移動または削除を行ったクラスと、このようなクラスに属する古いクラス・ファイルは削除する必要があります。同様に、名前変更、移動または削除を行ったリソースやデプロイと、出力ディレクトリまたはデプロイ・ディレクトリに残っているそれらの古いコピーも削除する必要があります。
アプリケーションのデプロイ・ディレクトリの内容が削除されます。
「クリーン」コマンドを正常に実行するには、次の条件が満たされている必要があります。
-
クリーンするプロジェクトの出力ディレクトリ、またはクリーンするアプリケーションの各プロジェクトの出力ディレクトリが指定されていること
-
出力場所がファイルではなく、ディレクトリとして指定されていること
「すべてクリーンし、アプリケーションをリフレッシュ」コマンドは、前述のすべての機能を実行し、索引ファイル、デプロイ・ファイルなどのIDEアーティファクトのクリーンも行います。これらのアーティファクトはクリーンされないと、IDEアーティファクトがアプリケーションの現在の状態と同期されていない可能性があるため、コンパイル時または実行時にエラーが発生する場合があります。
クリーン方法
「クリーン」コマンドを使用すると、新しいビルド・プロセスを開始するために、以前のビルドから残されたアーチファクトを削除できます。
プロジェクトのクリーン
プロジェクトをクリーンすることで、コンパイル時または実行時のエラーを防ぎます。プロジェクトをクリーンする手順を使用してください。
アプリケーション内で単一プロジェクトをクリーンすることができます。
プロジェクトをクリーンするには:
- 「アプリケーション」ウィンドウで、クリーンするプロジェクトを選択します。
- 「ビルド」メニューで、「<project>のクリーン」を選択します。
- 「 <project>をクリーン中」ダイアログで、「はい」をクリックします。
アプリケーションのクリーン
アプリケーションのクリーンによって、アプリケーションとそのすべてのプロジェクトがクリーンされます。アプリケーションをクリーンする手順を使用してください。
アプリケーションのクリーンによって、アプリケーションとそのすべてのプロジェクトがクリーンされます。アプリケーションのクリーンを実行すると、次の処理が行われます。
-
アプリケーションを構成する各プロジェクトの出力ディレクトリおよびデプロイ・ディレクトリの内容が削除されます。
-
アプリケーションのデプロイ・ディレクトリの内容が削除されます。
アプリケーションをクリーンするには:
- 「アプリケーション」ウィンドウで、クリーンするアプリケーションを選択します。
- 「ビルド」メニューで、「すべてクリーン」を選択します。
- 「アプリケーションをクリーン中」ダイアログで、「はい」をクリックします。
アプリケーションのクリーンおよびリフレッシュ
「すべてクリーンし、アプリケーションをリフレッシュ」オプションを選択して、IDEアーティファクトをアプリケーションの現在の状態と同期し、IDEアーティファクトをクリーンしてコンパイル時または実行時のエラーを防ぎます。アプリケーションをクリーンおよびリフレッシュする手順を使用してください。
単一コマンドでアプリケーションをクリーンおよびリフレッシュできます。
アプリケーションをクリーンおよびリフレッシュするには:
- 「アプリケーション」ウィンドウで、クリーンおよびリフレッシュするアプリケーションを選択します。
- 「ビルド」メニューで、「すべてクリーンし、アプリケーションをリフレッシュ」を選択します。
- 「すべてクリーンし、アプリケーションをリフレッシュ」ダイアログで、「はい」をクリックします。
Apache Antによるビルド
JavaライブラリおよびJavaで作成されたコマンドライン・ツールであるAntは、JDeveloperに統合されており、JDeveloperとともにインストールされます。Antは拡張可能で、クロスプラットフォームのコンパイルをサポートし、XML形式のビルドファイルを使用して、アプリケーションとアプリケーション・コンポーネントのビルド・プロセスを記述および制御します。
Apache Antは、Unixのmakeユーティリティの機能と似たビルド・ツールです。Antは、XML形式のビルドファイルを使用して、アプリケーションとそのコンポーネントを構築するためのプロセスを記述および制御します。Antはクロス・プラットフォームのコンパイルをサポートしており、簡単に拡張できます。Apache Antは、Apache Software Foundationの製品です。http://ant.apache.org/index.html
を参照してください。
Antビルドファイルでは、ターゲットの定義とターゲット間の依存性の定義を行います。各ビルドファイルには、1つのプロジェクトと少なくとも1つのターゲットが含まれています。ターゲットは、プログラミングされたタスクのシーケンスです。Antを実行してターゲットを作成する場合、ターゲットが依存する他のターゲットを最初に作成してから、ターゲット独自のタスクが実行されます。
AntはJDeveloperに統合されていて、その一部としてインストールされるため、JDeveloperを拡張機能として追加する必要はありません。アプリケーションまたはプロジェクト用にAntビルドファイルを追加または作成したり、空のビルドファイルを作成することができます。Antビルドファイルを編集するために、JDeveloperでXMLソース・エディタが使用できます。
アプリケーション・レベルでのAntビルドファイルの作成
Antビルドファイル
では、ターゲットの定義とターゲット間の依存性の定義を行います。アプリケーション・レベルでAntビルドファイルを作成する手順を使用してください。
アプリケーション・レベルでのAntビルドファイルを作成するには:
- 「ファイル」→「新規」を選択して「新規ギャラリ」を開きます。
- 「新規ギャラリ」の「カテゴリ」ツリーで、「一般」の「Ant」を選択します。
- 「項目」リストで、「アプリケーションからのビルドファイル」をダブルクリックします。ビルドファイルの作成ダイアログが開き、デフォルトのファイル名とディレクトリを変更できます。このダイアログでヘルプを参照するには、[F1]を押します。
- 「OK」をクリックします。新しい
build.xml
ファイルが作成され、XMLソース・エディタで開きます。生成されたbuild.properties
ファイルも作成されます。このファイルは両方とも「アプリケーション」ウィンドウの「アプリケーション・リソース」に表示されます。
プロジェクト・レベルでのAntビルドファイルの作成
プロジェクト・レベルでAntビルドファイルを作成する手順を使用してください。
プロジェクト・レベルでAntビルドファイルを作成するには:
- 「ファイル」→「新規」を選択して「新規ギャラリ」を開きます。
- 「新規ギャラリ」の「カテゴリ」ツリーで、「一般」の「Ant」を選択します。
- 「項目」リストで、「プロジェクトからのビルドファイル」をダブルクリックします。ビルドファイルの作成ダイアログが開き、デフォルトのファイル名とディレクトリを変更できます。このダイアログでヘルプを参照するには、[F1]を押します。
- 「OK」をクリックします。新しい
build.xml
ファイルが作成され、XMLソース・エディタで開きます。生成されたbuild.properties
ファイルも作成されます。このファイルは両方とも「アプリケーション」ウィンドウの「アプリケーション・リソース」に表示されます。
空のAntビルドファイルの作成
空のAntビルドファイルを作成する手順を使用してください。
空のAntビルドファイルを作成するには:
- 「ファイル」→「新規」を選択して「新規ギャラリ」を開きます。
- 「新規ギャラリ」の「カテゴリ」ツリーで、「一般」の「Ant」を選択します。
- 「項目」リストで、「空のビルドファイル」をダブルクリックします。ビルドファイルの作成ダイアログが開き、デフォルトのファイル名とディレクトリを変更できます。このダイアログでヘルプを参照するには、[F1]を押します。
- 「OK」をクリックします。新しい
build.xml
ファイルが作成され、XMLソース・エディタで開きます。これは、「アプリケーション」ウィンドウの「リソース」ノードに表示されます。
例9-1 ビルドファイル・ターゲットに対するAntの実行
-
プロジェクト・ビルドファイル内のターゲットに対して実行する場合。プロジェクトには複数のAntビルドファイルを含めることができますが、プロジェクトのビルドファイルとして指定できるのは1つのみです。プロジェクトのビルドファイルのターゲットに簡単にアクセスできるように、「<プロジェクト>でAntを実行」ツールバー・アイコンおよびドロップダウン・メニューを構成できます。
-
Antビルドファイルの編集時に「構造」ウィンドウから実行する場合。XMLソース・エディタでAntビルドファイルを開くと、そのターゲットが「構造」ウィンドウに表示されます。これらを選択して実行できます。
-
独自に定義した外部ツールから実行する場合。「外部ツールの作成」ウィザードを使用して、Antターゲットを作成するメニュー項目およびツールバー・ボタンを定義します。
プロジェクト・ビルドファイル・ターゲットに対するAntの実行
プロジェクトには指定されたプロジェクト・ビルドファイル
が1つ含まれ、これによってビルド・プロセス中に必須の状態に向かって進行するタスクがビルドされます。JDeveloperでAntを起動して、プロジェクト・ビルドファイル
で定義されているターゲットをビルドします。
AntをJDeveloperのメイン・メニューおよびツールバーから起動し、現在のプロジェクトのプロジェクト・ビルドファイルに定義されているターゲットを構築できます。
プロジェクトには複数のAntビルドファイルを含めることができ、これらの1つをプロジェクトのビルドファイルとして指定できます。「<project>でAntを実行」ツールバー・ボタンおよびドロップダウン・メニューから、プロジェクトのビルドファイルのターゲットに簡単にアクセスできるように構成できます。
プロジェクトのビルドファイルを選択して構成するには、Antプロジェクトのプロパティ・ページに移動します(「プロジェクト」→「プロジェクト・プロパティ」→「Ant」を選択)。
プロジェクトのビルドファイルのターゲットに対してAntを実行するには、次のようにします。
-
ツールバーで、「<project>でAntを実行」をクリックします。
Antによって、プロジェクトに指定されているデフォルトのターゲットが作成されます。
-
メイン・メニューから、 「ビルド」→「<project>でAntを実行」をクリックします。
Antによって、プロジェクトに指定されているデフォルトのターゲットが作成されます。
-
「構造」ペインからターゲットを選択します。
IDEでのAntツールの使用
Antログ・ウィンドウには、ビルド・ターゲット、コンパイル・エラーおよびソース・コードを指す警告などのAntビルドに関するメッセージとメッセージの出力レベルが表示されます。
Antログ・ウィンドウには、Antビルドに固有のメッセージが表示されます。Antログ・ウィンドウには次のような特徴があります。
-
このウィンドウには、1つ以上のターゲットのビルドのためAntを起動することによって生成されたメッセージが表示されます。
-
Antタスクによって生成されたメッセージは、Antビルドファイル内のこれらのタスクの定義にリンクされます。一方、コンパイル・エラーおよび警告は、これらの生成元のソース・コードにリンクされます。
-
カラー・コーディングは、メッセージの出力レベルを示します。
Apache Mavenによるビルドと実行
Apache Mavenは、プロジェクトのビルド、レポートおよびプロジェクト・オブジェクト・モデルからのドキュメントを管理する、ビルド・プロセスの自動化ツールです。Mavenを使用してプロジェクトをビルドし、Oracleおよびサード・パーティのアーティファクトに対する依存性を管理し、アーティファクトをダウンロードします。
Apache Mavenは、ビルド・プロセスの管理と自動化に広く利用されるツールです。また、プロジェクト管理、特に依存性およびリリース管理にも利用されます。
JDeveloperを使用してビルドされたアプリケーションのビルド、テストおよびデプロイを、一貫性をもって自動的に行うことができます。これを使用すると、開発者は、Mavenを使用するプロジェクトでの作業時に、Mavenを使用する別のプロジェクトに容易に移動できるという利点を享受できます。以前にMavenを使用したことのある開発者の多くは、Mavenを使用する馴染みのないプロジェクトでも迅速にダウンロードし、ビルドして、デプロイすることができます。
Mavenはプロジェクトのビルド、レポート、中心的な情報からのドキュメンテーション、プロジェクト・オブジェクト・モデル(POM)を管理できます。プロジェクトをビルドする際に、そのプロジェクトのPOMと、Mavenを使用するすべてのプロジェクトで共有される一連のプラグインを使用すると、統一されたビルド・システムが提供されます。Mavenライフサイクルは、アーティファクト(プロジェクト)をビルドして処理するためのプロセスで構成されます。各種Mavenビルド・ライフサイクルは次のとおりです。
-
デフォルト: プロジェクトのデプロイメント
-
クリーン: プロジェクトのクリーン
-
サイト: プロジェクト・サイトのドキュメント
各ビルド・ライフサイクルは、一連のビルド・フェーズで定義されます。各フェーズは、ライフサイクルのステージを表します。たとえば、デフォルトのビルド・ライフサイクルは、次のフェーズで構成できます。
-
検証: プロジェクトが適切で、必要な情報がすべて入手可能であることを確認します。
-
コンパイル: プロジェクトのソース・コードをコンパイルします。
-
テスト: 適切なユニット・テスト・フレームワークを使用して、コンパイル済ソース・コードをテストします。
-
パッケージ: コンパイル済コードを取得し、配布可能な形式(JARなど)にパッケージ化します。
-
インストール: 他のプロジェクト内の依存性としてローカルに使用するために、パッケージをローカル・リポジトリにインストールします。
-
デプロイ: 他の開発者およびプロジェクトと共有するために、最終パッケージをリモート・リポジトリにコピーします。
同様に、各フェーズは一連のプラグイン・ゴール(タスク)で定義されます。これらは、フェーズがどのように遂行されるかを具体的に決定します。ゴールとフェーズは、呼び出された順序で連続して実行されます。JDeveloperを使用すると、フェーズとそのゴールを定義し、それらをPOMファイルのコンテキスト・メニューから起動できます。詳細は、「POMファイルでのコンテキスト・メニューの使用」を参照してください。
Oracle Fusion Middlewareを使用してアプリケーションを開発する場合、Mavenを使用すると次の操作が可能になります。
-
プロジェクトをビルドします。
-
Oracleおよびサード・パーティのアーティファクトに対して依存性を管理します。
-
内部または外部(パブリック)Mavenリポジトリからアーティファクトを自動的にダウンロードします。
Mavenの詳細は、http://maven.apache.org/index.html
を参照してください。
リポジトリの理解
Mavenリポジトリは、アーティファクトのコレクションをホストしている共有可能な場所です。アーティファクトは、中央のパブリック・リポジトリまたはプライベート・リポジトリからプルできます。Mavenは、指定のパブリック・リポジトリまたはプライベート・リポジトリからアーティファクトを更新します。各アーティファクトは、ローカルのMavenリポジトリにビルド実行として入れられます。アーティファクトは、特定のディレクトリ構造で整理されています。これには、コンパイル済コード (JARファイル、WARファイル)と、そのコードに関するメタデータが含まれます。
次の2種類のリポジトリがあります。
-
ローカル・リポジトリ: ローカル・マシンに格納されるリモート・リポジトリのキャッシュ。Mavenプロジェクトは、ローカル・リポジトリに対してビルドされます。ローカル・リポジトリには通常、リモート・リポジトリで利用可能なファイルのサブセットと任意の一時ビルド・アーティファクトのみが格納されます。Mavenはこの場所にアクセスして、アーティファクトの解決に対応します。この場所にあるコンテンツは編集しないでください。
Mavenゴールを実行してプロジェクトをビルドすると、必要なすべての依存性がアップストリーム・リポジトリからダウンロードされて、ユーザーのローカル・リポジトリに保存されます。Mavenはこの場所にアクセスして、アーティファクトの解決に対応します。
-
リモート・リポジトリ: Mavenのすべてのアーティファクトとプラグインを含むリポジトリ。リモート・リポジトリは、サード・パーティのリポジトリ(http://repo.maven.apache.org/など)、またはプライベート内部リポジトリになります。
JDeveloperはMavenリポジトリを管理し、通常はHTTPを通してユーザーがそれを利用できるようにします。また、その他の、通常は外部のMavenリポジトリのプロキシとして動作し(アーティファクトをキャッシュ)、ビルド時間を短縮したり、ネットワーク使用率を低減することもできます。つまり、Maven POMは、開発者が集中する製品のアーティファクト別に用意されます。したがって、該当するMavenリポジトリを指し示すようにMavenを構成することができます。
Maven同期ツールを使用すると、リポジトリの設定や移入が容易になります。同期ツールは、Oracle JDeveloperやOracle WebLogic Serverのインストールで入手可能なプラグインです。このプラグインを追加するには、「リポジトリの移入」を参照してください。
Mavenプラグインの理解
Mavenはプラグインによって操作が実行されるプラグイン実行フレームワークであるため、プラグインによりMavenを拡張します。POMから<build/>要素および<reporting/>要素を使用して、ビルド時に実行されるビルド・プラグインやレポート・プラグインなどのコア・プラグインを構成します。
プラグインを使用してMavenを拡張することができます。プラグインにより、レポート用またはビルド・プロセス用に他にも多数の開発ツールが使用できるようになります。プラグインにより、Mavenゴールの実行が可能になります。すべての作業はプラグインによって処理されます。次のように、多数のコア・プラグインがあります。
-
ビルド・プラグインはビルド時に実行するため、POMの
<build/>
要素に構成する必要があります。 -
レポート・プラグインはサイト生成時に実行するため、POMの
<reporting/>
要素に構成する必要があります。
利用可能なMavenプラグインのリストについては、http://maven.apache.org/plugins/index.html
を参照してください。
依存性の理解
Maven依存性は、プロジェクトのビルドに必要なJARファイルが含まれているライブラリを指定します。コンパイルを行うと、Mavenにより依存性がダウンロードされてリンクされるため、POMファイル内のすべての依存性は常に.jpr
プロジェクトまたは.jws
アプリケーションと同期がとられた状態になります。
Maven依存性は、プロジェクトのビルドに必要なJARファイルが含まれているライブラリの指定に使用します。ローカル・リポジトリに存在しない依存性を使用してプロジェクトをビルドすると、Mavenでその依存性が検索され、ユーザーのローカル・リポジトリに追加されます。プロジェクトがMavenプロジェクトであり(つまり、POMファイルが関連付けられている)、依存性がプロジェクトに追加されている場合は、変更もPOMにコミットされます。
Mavenは、コンパイルおよび、依存性を必要とするその他のゴールに対する依存性をダウンロードして、リンクします。また、これらの依存性(推移依存性)の依存性を取り入れて、プロジェクトで必要とされる依存性のみにリストを集中させることができます。
依存性は、「依存性」タブでの選択とPOMファイルとの間で同期化されます。たとえば、プロジェクトの依存性がPOMにはなく、プロジェクトから別の依存性を追加した場合、Maven: 依存性ダイアログで「OK」をクリックすると、両方の依存性がPOMに追加されます。
POMファイルの依存性は、.jpr
プロジェクト、またはPOMファイルと関連する.jws
アプリケーションを使用して常に同期化されます。依存性(リポジトリの依存性を除く)も、「プロジェクト・プロパティ」ダイアログと「アプリケーション・プロパティ」ダイアログから追加できます。これらの依存性は、関連するPOMファイルと自動的に同期化されます。
プロジェクト・オブジェクト・モデルの理解
プロジェクト・オブジェクト・モデルは、ビルド・プロセスに必要なプロジェクト情報およびプラグイン構成を含むpom.xml
という名前のファイルに保持されているMavenプロジェクトを表します。必須フィールドのgroupId:artifactId:version
およびpackaging
は特定のプロジェクト・バージョンを指し、アドレスおよびタイムスタンプのように動作します。
Mavenのプロジェクト・オブジェクト・モデル(POM)ファイルは、JDeveloperの.jpr
ファイルと類似しています。POMは、Mavenがプロジェクトをビルドする際に使用するプロジェクトと構成の詳細に関する情報を含むXMLファイルです。プロジェクトのビルドに必要なほとんどの情報が、このXMLファイルに含まれています。POMで指定できる構成情報としては、プロジェクトの依存性、プラグイン、実行可能なゴール、ビルド・プロファイルなどがあります。
Mavenでは、プロジェクトの標準デフォルト動作を仮定することで「構成に対する規則」という概念が使用されます。たとえば、Javaアプリケーションの場合、Mavenはソース・コードの場所を${
basedir}/src/main/java
と仮定するため、リソース・ファイルは.../main/resources
内にあることが前提になります。次の規則の場合、Mavenは、最終的にJARが${
basedir}/target
ディレクトリに作成されると仮定します。この情報はすべてPOMにすでに含まれているため、すべてのパスを1つずつ構成する手間が省けます。Mavenコア・プラグインでは、ソース・コードのコンパイルやパッケージ化などのプロセスにも規則を採用しています。Mavenは、規則に従うことで、プロジェクトのビルドと管理に関する作業の大部分を実行できます。
次に、POMに含めることができる最小限のMaven座標を示します。
-
グループID: パッケージ名と類似するプロジェクトの一意の識別子(
com.acme.corp
など)。 -
アーティファクトID: 拡張子のないJARの名前(
MyProject
など)。 -
バージョン: このプロジェクトにより生成されたアーティファクトの現在のバージョン(
1.1.0
など)。
「パッケージ化」は、POMの作成時に指定できるもう1つの座標です。「パッケージ化」を使用して、プロジェクトのアーティファクト・タイプを指定します(たとえば、プロジェクトをJARファイルまたはWARファイルでパッケージ化するように指定します)。「パッケージ化」の値を指定しない場合、MavenではデフォルトのタイプがJARであると仮定します。
Mavenプロジェクト・オブジェクト・モデルの詳細は、http://maven.apache.org/index.html
を参照してください
設定ファイルの理解
すべてのプロジェクトに共通のMavenのメイン制御ファイルであるsettings.xml
ファイルを使用して、ローカル・リポジトリ・パスの設定、代替リモート・リポジトリ・サーバーの設定、プロキシの設定などのMaven実行を構成します。settings.xml
ファイルを構成する手順を使用してください。
settings.xml
ファイルは、Mavenのメイン制御ファイルです。このファイルを使用して、ローカル・リポジトリ・パスの設定、代替リモート・リポジトリ・サーバーの設定、プロキシの設定などのMaven実行を構成します。ただし、POMファイルとは異なり、settings.xml
ファイルは、明示的に変更されるまで、すべてのプロジェクトに対して共通の状態にしておく必要があります(推奨)。
settings.xmlファイルを構成するには:
- メイン・メニューから、「ツール」→「プリファレンス」を選択します。
- カテゴリ・ツリーで、「Maven」→「設定」を選択します。
- 必要なコマンド行オプションを選択します。
設定ファイルの詳細は、http://maven.apache.org/settings.html
を参照してください。
POMファイルの選択
アプリケーションおよび各プロジェクトのPOMを選択して、.jpr
ファイルのパスおよび依存性を同期します。アプリケーションのPOMファイルを設定する手順を使用してください。
Mavenを使用してアプリケーションの作成と管理を行う場合、POMがアプリケーション・レベルでアプリケーション内のプロジェクトごとに作成されます。POMファイルは、アプリケーションと各プロジェクトで使用するように指定できます。プロジェクトに対してPOMファイルを選択すると、.jpr
のパスと依存性が自動的に同期化します。
ノート:
通常は、アプリケーションやプロジェクトの作成ウィザードでMavenをビルド・ツールとして選択する際、アプリケーションやプロジェクトの作成時にPOMファイルが設定されるため、そのファイルを明示的に設定する必要はありません。ギャラリから、アプリケーションやプロジェクトに対してPOMを作成するように選択した場合もPOMファイルが設定されます。
アプリケーションのPOMファイルを設定するには:
-
「アプリケーション」ウィンドウでアプリケーションを右クリックし、「アプリケーション・プロパティ」を選択します。
-
カテゴリ・ツリーで、「Maven」を選択します。
このアプリケーションに対してMavenを初めて選択した場合は、「拡張機能のロード」をクリックします。
-
「参照」ボタンをクリックして、必要なPOMファイルを選択します。
プロジェクトのPOMファイルを設定するには:
- 「プロジェクト」ウィンドウでプロジェクトを右クリックし、「プロジェクト・プロパティ」を選択します。
- カテゴリ・ツリーで、「Maven」を選択します。
- 「参照」ボタンをクリックして、必要なPOMファイルを選択します。
Mavenのインストール
JDeveloperで提供されるMavenは、ORACLE_HOME
/oracle_common/modules
ディレクトリにあります。サーバーにMavenをインストールするには、「Archiva Mavenリポジトリ・マネージャのインストールおよび構成」を参照してください。
始める前に
使用するMavenアプリケーションおよびプロジェクトを作成する手順を使用してください。「新規ギャラリ」を使用して、アプリケーションを作成し、アプリケーションとそのすべてのプロジェクトに対してPOMファイルを生成します。
Mavenを使用するには、まずアプリケーションを作成し、その後でアプリケーション内の少なくとも1つのプロジェクトに対してオプションを選択します。
「新規ギャラリ」を使用すると、アプリケーションとそのすべてのプロジェクトに対してPOMファイルを生成できます。これによって、アプリケーション、アプリケーションの最上位プロジェクト・オブジェクト・モデル・ファイル(pom.xml
)、およびプロジェクトごとのデフォルトのpom.xml
ファイルが生成されます。
Mavenアプリケーションとプロジェクトを作成して使用するには:
Maven POMファイルの作成方法
Maven対応アプリケーションで作成されたプロジェクトにPOMファイルを追加できます。POMを作成する手順を使用してください。
Maven対応アプリケーションにプロジェクトを作成する場合、POMファイルをプロジェクトに追加できます。
POMを作成するには:
POMファイルでのコンテキスト・メニューの使用
ライフサイクル・フェーズに含めるフェーズまたはゴールを指定して、ゴール・プロファイルを作成して管理します。ゴール・プロファイルを作成または管理し、ゴールを追加する手順を使用してください。
「Mavenゴール・プロファイルの実行」プロファイルやMavenフェーズの実行フェーズなどのコマンド・メニューにアクセスするには、「アプリケーション」ウィンドウでpom.xml
ファイルを右クリックするか、POMファイルが開いている場合は「概要」タブまたは「ソース」タブでpom.xml
を右クリックします。
ゴール・プロファイルを作成して管理するには、ライフサイクル・フェーズに含めるフェーズまたはゴールを指定します。
ゴール・プロファイルを作成または管理するには:
-
POMファイルを右クリックします。
-
「ゴール・プロファイルの管理」を選択します。
-
「Maven: フェーズ/ゴール」プリファレンス・ページで、必要なゴール・プロファイルを選択します(またはプラス・アイコンをクリックして新しいプロファイルを作成します)。
-
必要なライフサイクル・フェーズを選択し、右矢印をクリックして、そのフェーズを「選択したフェーズ/ゴール」列に移動します。
[Shift]キーを押しながら、一度に複数のフェーズを選択して移動します。
-
「OK」をクリックします。
フェーズおよびゴールのリストをカスタマイズするには、「選択したフェーズ/ゴール」リストからゴールを追加または削除します。たとえば、Mavenアプリケーションをアンデプロイできるようにする場合は、ローカル・リポジトリで利用可能なweblogic-maven-plugin
からアンデプロイ・ゴールを追加できます。
ゴールを追加するには:
- 「選択したフェーズ/ゴール」パネルでプラス(+)記号をクリックします。
- 追加する特定のゴールを含むプラグイン・ノードを見つけて開きます。
- 必要なゴールを選択します([Shift]キーを押しながら複数のゴールを順に選択するか、[Ctrl]キーを押して隣接してないゴールを選択します)。
- 「OK」をクリックします。
必要なゴールをローカル・リポジトリで利用できない場合、「リモート・プラグイン・リポジトリからダウンロード」をクリックして、ゴールの名前とプラグイン・バージョンを指定し、そのプラグインを含むリモート・リポジトリを選択します。リモート・リポジトリにアクセスできるかどうかを確認するには、「プラグインの検証」をクリックします。
コマンドラインからMavenゴールを実行する方法の詳細は、Oracle Maven同期プラグインの実行に関する項を参照してください。
Mavenのフェーズとゴールの詳細は、http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
を参照してください。
リモート・リポジトリの指定方法と管理方法
プロジェクトでリモート・リポジトリ内のアーティファクトが必要な場合は、「ツール」メニューまたはプロジェクトのPOMファイルを使用してリモート・リポジトリを管理します。「ツール」の「プリファレンス」およびPOMファイルを使用して、リモート・リポジトリを追加および管理する手順を使用してください。
様々な理由でリモート・リポジトリにアクセスする必要があります。たとえば、プロジェクトで様々な外部ベンダーの依存性を使用する場合があります。これらの依存性は、異なるリモート・リポジトリで使用可能です。JDeveloperでは、リモート・リポジトリでのアーティファクトの構成と検索を行うことができます。
リモート・リポジトリを管理するには、メイン・メニューから「ツール」→「プリファレンス」を使用するか、プロジェクトのPOMファイルを使用します。「プリファレンス」ダイアログでリモート・リポジトリを追加する場合、settings.xml
ファイルにリポジトリを追加して、そのリポジトリをアプリケーションのすべてのプロジェクトで利用できるようにします。プロジェクトのPOMファイルにリモート・リポジトリを追加する場合、それは該当プロジェクトでのみ利用できます。
「ツール」→「プリファレンス」からリモート・リポジトリを追加して管理するには:
-
「メイン・メニュー」から、「ツール」→「プリファレンス」→「Maven」→「リポジトリ」を選択します。
-
「リモート・リポジトリ」表で、「追加」(+)アイコンをクリックします。
表に新しい行が追加されます。
-
新しい行を選択します。
-
「Maven - リポジトリ」ページの「リポジトリの詳細」セクションで、リモート・リポジトリのURL (例:
http://repo1.maven.org./maven2
)を入力します。 -
「索引更新URL」フィールドに、
nexus-maven-repository-index.zip
およびnexus-maven-repository-index.properties
のダウンロード元であるベースの場所を入力します。リポジトリ内でアーティファクトを検索する索引場所を指定して、実際にそれをダウンロードしなくてよいようにする必要があります。
ノート:
「テスト」ボタンをクリックすると、リポジトリとその索引データにアクセス可能かどうかをチェックすることができます。
-
「設定.XMLに含める」を選択して、リポジトリをsettings.xmlファイルに追加します。
-
「リモート・リポジトリ」表で新しいリポジトリ用のチェック・ボックスを選択します。
-
選択されたリポジトリの索引付けアイコン(「リポジトリの削除」アイコンの右にある)をクリックします。
これで、選択したリモート・リポジトリの索引データがダウンロードされます。
POMファイルからリモート・リポジトリを追加して管理するには:
追加後は、選択したリポジトリの次の詳細を指定できます。
-
レイアウト: リポジトリのディレクトリ構造がレガシー(Maven 1)とデフォルト(Maven 2)のどちらであるか。これらのレイアウトは、ディレクトリ構造、デフォルト・スナップショットのタイムスタンプ、デフォルト・メタデータ・ファイルの存在の有無の点で異なります。
-
リリースは検索しません: Mavenがリリース・バージョンを検索するかどうか。
-
スナップショットは検索しません: スナップショット・リリースに依存するかどうか。アーティファクトのスナップショット・バージョンに依存するアーティファクトのリリースまたはデプロイはお薦めしません。
-
更新ポリシー: Mavenが、リリース・バージョンとスナップショットの検索時にリポジトリの更新をどのように検索するか(常時、毎日、間隔、実行しない)。
-
チェックサム・ポリシー: リリース・バージョンとスナップショットの検索時にどのチェックサム・ポリシー(警告、失敗または無視)を使用するか。
リポジトリの移入
Mavenプロジェクトの作成時には、JDeveloperにより最新バージョンのアーティファクトがローカル・リポジトリにダウンロードされ、JDeveloperに付属のMaven同期プラグインによってローカル・リポジトリまたは共有リポジトリにMavenアーティファクトが移入されます。共有リポジトリでMaven同期プラグインを実行する手順を使用してください。
Mavenプロジェクトを作成する場合、IDEは最新のアーティファクトをローカル・リポジトリにダウンロードします。典型的な開発シナリオでは、これらの依存性は共有リポジトリからダウンロードされますが、JDeveloperでは、IDEライブラリ定義からローカル・リポジトリを移入することもできます。
コンパイル時にアプリケーションが依存するアーティファクトを含んだ共有リポジトリは、開発チームが管理することをお薦めします。チーム開発で使用するJDeveloperおよびADFライブラリを含んだ共有リポジトリを移入するには、Maven同期プラグイン(同期ツールとも呼ばれる)を使用できます。
Maven同期プラグインにより、ローカル・リポジトリまたは共有リポジトリがORACLE_HOMEディレクトリから移入されます。プラグインは、JDeveloperとともに入手可能です。同期プラグインは、次の2つのコンポーネントで構成されます。
-
oracle-maven-sync-
version
.pom
: プラグインを記述します。version
値は、Maven同期POMファイルのバージョンです(oracle-maven-sync.12.1.3.0.0.pom
など)。 -
oracle-maven-sync-
version
.jar
: プラグインが含まれます。version
値は、Maven同期JARファイルのバージョンです(oracle-maven-sync.12.1.3.0.0.jar
など)。
どちらのコンポーネントもORACLE_HOME
/oracle_common/plugins/maven/com/oracle/maven/oracle-maven-sync/
version
にあります。
同期プラグインはORACLE_HOME
内のすべてのMavenアーティファクトを調べて、すべてのアーティファクトが指定のリポジトリにインストールされていること、およびバージョンが完全に一致していることを確認します。つまり、バージョン番号とファイルは、バイナリ・レベルで同一であり、パッチ適用済のすべてのファイルがMavenリポジトリに正確に反映されます。これは、デプロイメントを正常に行うために不可欠です。
プラグイン同様、MavenアーティファクトはORACLE_HOME/maven/artifact
にインストールされています。
Maven同期プラグインを共有リポジトリで実行するには:
ノート:
Mavenプロジェクトのテストとプロトタイプ作成が初めて行われる場合、JDeveloperはローカル・リポジトリを移入しますが、これはお薦めしません。
Maven同期プラグインのインストールおよび実行の詳細は、「Mavenリポジトリ・マネージャへの移入」を参照してください。
リポジトリを移入したら、ADF oracle-adffaces-ejb
Archetypeなどの様々なArchetypeを利用できます。このArchetypeにより、ModelプロジェクトやViewControllerプロジェクトを使用してFusion Webアプリケーションの基本テンプレートが提供されます。このArchetypeを使用してアプリケーションを作成する場合、次の3つのPOMファイルが生成されます。
-
EJBプロジェクトのPOM
-
WAR (JSF)プロジェクトのPOM
-
EJBプロジェクトとWARプロジェクトをパッケージ化するEARを定義するPOM
プロジェクトのPOMファイルには、ojmake
プラグインとojdeploy
プラグインが含まれます。どちらのプロジェクトのPOMも親POMを指し示します。親POMは親プロジェクトのことで、これ以外のプロジェクトはここから依存性、プラグイン、プラグイン構成、リポジトリなどを継承します。
Maven Archetypeを使用したアプリケーションの作成の詳細は、「Maven Archetypeを使用したMavenプロジェクトの作成方法」を参照してください。
POMファイルとプロジェクト・ファイルの同期
Maven対応プロジェクトのプロジェクト・ソース・パスまたはクラスパスが更新されると、JDeveloperでPOMファイルへの変更が同期されます。プロジェクトのPOMソース・ファイルに依存性が追加された場合、JDeveloperによってそのアーティファクトがプロジェクトの.jpr
ファイルに追加されます。
Maven対応プロジェクトでは、プロジェクトのソース・パスまたはクラスパスを更新する場合、JDeveloperは、変更をPOMファイルに同期します。たとえば、「プロジェクト・プロパティ」ダイアログの「ライブラリとクラスパス」パネルに移動してJARファイルを追加する場合、JDeveloperは、そのJARファイルのPOMを作成し、それをローカル・リポジトリにロードして、<dependency>
要素をプロジェクトのPOMファイルに追加します。同様に、プロジェクトの依存性をPOMソース・ファイルに追加する場合、JDeveloperは、そのアーティファクトをプロジェクト・ファイル(.jpr
)に追加します。
Maven同期のカスタマイズ
POMファイルが変更されると、プロジェクトとPOMの同期を保つためにMavenによって自動的にプロジェクト・ファイルが更新され、反対にプロジェクトが変更された場合は常に、POMが自動的に同期されます。手動同期に切り替える手順を使用してください。
POMファイルが変更されるたびに、Mavenは自動的にプロジェクト・ファイルを更新し、プロジェクトとPOMの同期を保ちます。その逆も同様で、プロジェクトが変更されるたびにPOMが自動的に同期されます。
プロジェクトとPOM間の自動同期はアプリケーション・プロパティの「Maven」ページの設定で、デフォルトは「オン」に設定されています。ただし、次のように同期の発生を制御する場合があります。
-
プロジェクトまたはPOMに複数の変更を行っていて、変更されるたびにではなく、すべての変更が行われてから同期を実行する
-
プロジェクトは更新したが、POMをすぐには更新しない
-
プロジェクトがソース制御されていて、変更後、POMファイルまたは一部のプロジェクト・ファイルがチェックされていなく、同期が失敗したため、すべてのファイルがチェックされてから手動で同期をトリガーする
-
プロジェクトに追加されたライブラリまたはクラスパス依存性がプロジェクトのリポジトリに存在せず、ローカル・リポジトリへのライブラリおよびクラスパス依存性のデプロイメントを手動でトリガーする
同期設定を手動モードに切替えることで、必要なときに(POMからプロジェクトにまたはプロジェクトからPOMに)同期が実行されるようにトリガーすることができます。手動モードにおいてプロジェクトおよびPOMが同期されていない場合に、監査ルールがアラートするよう設定することもできます。監査ウィンドウから同期操作の実行を選択できます。監査ルールの設定の詳細は、11.2.7「JDeveloperでのJavaコードの監査方法」を参照してください。
手動同期に切り替えるには:
- アプリケーションを右クリックし、ポップアップ・メニューで「プロパティ」を選択します。
- 「プロパティ」ウィンドウで「Maven」を選択します。
- POM-プロジェクト同期の手動管理を選択します。
- 自動同期の選択を解除します。
- 「OK」をクリックします。
POMとプロジェクトの同期の準備が完了したら、「プロパティ」ウィンドウの「Maven」ページに戻り、「すぐに同期」をクリックします。変更された内容に応じて、POMからプロジェクトに対してまたはプロジェクトからPOMに対して同期することができます。
プロジェクト依存性の中には、それぞれの依存性がある場合があります(推移的な依存性と呼ばれます)。POMからプロジェクトに依存性を同期する場合には、推移的な依存性も同時に同期されます。
アプリケーション作成時にデフォルトのMaven構造に合わせる方法
新しいMavenアプリケーションの作成時に、デフォルトのMaven構造にあわせて標準プロジェクト構造を変更できます。デフォルトのMaven構造を変更する手順を使用してください。
Mavenアプリケーションを新しく作成する際、デフォルトのMaven構造に合わせることができます。
デフォルトのMaven構造を変更するには:
Maven Archetypeを使用したMavenプロジェクトの作成方法
Maven Archetypeはプロジェクト・テンプレート・ツールキットで、ここからプロジェクトに対してsrc-mainおよびsrc-testタイプのソース・コードが生成されます。Archetypeを使用してMaven対応のJ2EEアプリケーションを作成する手順を使用してください。
Archetypeは、Mavenを使用してアプリケーションをすばやく作成するためのテンプレートに類似しています。Archetypeは、Mavenプロジェクトを生成するための一貫した手段となります。詳細は、http://maven.apache.org/guides/
にアクセスして、「What is an Archetype」および「Creating Archetypes」の各リンクを参照してください。
Archetypeを使用してMaven対応J2EEアプリケーションを作成するには:
Archetypeを使用してMavenプロジェクトを作成する場合、2種類のソース・コードが生成されます。src/main
とsrc/test
が生成されます。プロジェクトのソース・コードとリソースはsrc/main
に配置されますが、プロジェクトのテスト・ケースはsrc/test
に配置されます。JUnitテストやTestNGテストなどのJavaクラスは、テストのクラスパス・リソースとともにこのディレクトリにあります。
ノート:
「新規ギャラリ」→「一般」→「Maven」→「Mavenプロジェクトのインポート」を選択して、既存のMavenプロジェクトをJDeveloperにインポートすることもできます。これにより、インポートされたMavenソースのコンテンツに基づいてMavenアプリケーションと関連のプロジェクトが作成されます。
POMファイルに対するMavenゴールの実行方法
クリーン、コンパイル、ビルドおよびパッケージなどのMavenプラグインのゴールは、ビルド・ライフサイクルのビルド・フェーズを構成するステージを表します。Mavenゴールを実行する手順を使用してください。
Mavenは、ビルド・ライフサイクルの概念に基づいています。ビルド・ライフサイクルは、ビルド・フェーズで構成されます。ここでは、フェーズは、ライフサイクルのステージを表すプラグイン・ゴールで構成されます。Mavenには、プロジェクトの管理に使用されるクリーン、コンパイル、ビルド、パッケージなど、デフォルトのゴールがいくつか用意されています。すべてのプロジェクトでは、フェーズ内にゴールが含まれている同じコア・フェーズを実行します。
Mavenゴールを実行するには:
プロジェクトからMaven POMを作成する方法
pom.xml
は、プロジェクトをビルドするための情報が含まれている構成ファイルです。コンパイラの要素および設定を追加して、既存のプロジェクトからプロジェクトのMaven POMを作成する手順を使用してください。
「アプリケーション」ウィンドウで選択した既存のプロジェクトに基づいて、Maven POMを作成できます。複数のソース・ディレクトリについてビルド要素が追加されます。プロジェクトに対して指定したJavaコンパイラに関する設定が追加されます。
プロジェクトのMaven POMを作成するには:
- 「アプリケーション」ウィンドウで、POMを作成するためのプロジェクトを選択します。
- 「ファイル」→「新規」を選択し、「新規ギャラリ」を開きます。
- 「カテゴリ」リストで、「一般」を開いて「Maven」を選択します。
- 「プロジェクトのMaven POM」を選択します。
- ダイアログを完了した後で、「OK」をクリックします。
Mavenアプリケーションの監査
空のタグや無効な値を指定すると、ビルドの実行時にエラーが発生します。監査では、pom.xml
に対してMavenプロジェクトを作成しているときに発生したエラーが処理されます。
pom.xml
を編集している間、ビルドの実行時に空のタグや無効な値によってエラーが生じることがあります。このようなエラーは、監査の一環として捕捉して報告する必要があります。監査では、pom.xml
に対してMavenプロジェクトを作成しているときに報告されたエラーをすべて処理する必要があります。
検証の例を次に示します。
-
継承後にアーティファクトID、グループID、従属性バージョン、プラグインなどの無効な値/空の値が適用されます。
-
プロファイル・アクティブ化ルールのエントリが重複しています。
テスト設定の構成
POMファイルをダブルクリックし、「概要」で「テスト設定」を選択して、Mavenがアプリケーションでテスト・リソースを検出する方法を指定します。JDeveloperでJUnitテスト・プロジェクトを使用してアプリケーション・テスト・ソースおよびリソース・パスを構成するか、テスト・プロジェクトの「プロジェクト・プロパティ」ダイアログからテスト・パスを構成します。
Mavenがアプリケーションでテスト・リソースをどのように検出するかを指定できます。POMファイルをダブルクリックして、「概要」タブで「テスト設定」を選択します。アプリケーションのテスト・ソースとリソース・パスを手動で構成できます。「テスト設定」タブで、テスト目的のプロジェクトを指定するか、JDeveloperをテスト・リソースに指定できます。
テスト用に個別のプロジェクトがある場合、JDeveloperは、様々なテスト・アーティファクトのパスを検出できます。テスト・リソースが、他のソースやアーティファクトを含むプロジェクト内にある場合、それらを明示的に選択する必要があります。詳細
テスト設定には、次の2つの構成方法があります。
-
テスト・ソースやテスト・リソースを含む専用のJDeveloperプロジェクト(JUnitテスト・プロジェクト)がすでにある場合、それを「テスト設定」タブで使用します。
-
テスト・プロジェクトの「プロジェクト・プロパティ」ダイアログからテスト・パスを構成することもできます。テスト・プロジェクトのソースとリソースは、関連付けられたPOMファイルに自動的に同期されます。
コード・インサイトの理解
コード・インサイトは、ローカル・リポジトリから必要な値をフェッチしてpom.xml
ソース・ファイルでのコードの作成にかかる時間を短縮します。コード・インサイトを表示する手順を使用してください。
コード・インサイトを使用すると、pom.xml
ソース・ファイルでのコード作成プロセスにかかる時間を短縮できます。
コード・インサイトを確認するには:
- コード・エディタで
pom.xml
ファイルを開きます。 - 「プラグイン」タブで、プラグイン要素を追加します。
- プラグインの<executions>セクションを追加します。
コード・インサイトのサポートは、ローカル・リポジトリからフェッチされる「概要」タブの値に基づいています。たとえば、パッケージ・タイプの場合、コード・インサイトは「パッケージ・タイプ」の「概要エディタ」に表示される値リストを表示します。
次のコード・インサイトの値リストもサポートされています。
-
フェーズ、プラグインの中
-
更新ポリシー、チェックサム・ポリシーおよびレイアウト
-
タイプおよびスコープ、依存性の中
JDeveloperでのWebLogic Mavenプラグインの使用方法
WebLogic Mavenプラグインを使用して、Mavenを使用してビルドされたアプリケーションをMaven環境内からWebLogic Serverにデプロイ、再デプロイ、アンデプロイおよび更新します。
プラグインを使用すると、Mavenを使用してビルドされたアプリケーションをMaven環境内からWebLogic Serverにデプロイ、再デプロイして、更新することができます。アプリケーションのアンデプロイも可能です。『Oracle WebLogic Serverへのアプリケーションのデプロイ』を参照してください。
ojdeployおよびojmakeの使用方法
JDeveloperでは、build.xml
ファイルへのデプロイ・ターゲットの追加によるAntスクリプトでのデプロイメントをサポートしています。POMファイルを変更して、Mavenビルド・ツールでコマンドを使用するためのojdeploy
およびojmake
デプロイメント・プラグインを追加し、POMの作成時にプラグインを構成し、プロジェクトにデプロイメント・プロファイルを追加します。
JDeveloperでは、Antスクリプトによるデプロイメントをサポートしています。デプロイ・ターゲットをbuild.xml
ファイルに追加すると、このサポートが有効になります。「Antを使用してコマンドラインからデプロイする方法」を参照してください。
Maven POMファイルでは、ojmake
と同様にojdeploy
も使用できます。JDeveloperでは、次に示すように、POMファイルが変更され、必要に応じてojdeploy
およびojmake
のデプロイメント・プラグインが追加されます。
<build> <plugins> <plugin> <groupId>com.oracle.adf.plugin</groupId> <artifactId>ojmake</artifactId> <version>12.1.3-0-0</version> <configuration> <ojmake> ${oracleHome}/jdeveloper/jdev/bin/ojmake </ojmake> <files> ${basedir}/Application2.jws </files> <usemaven> true </usemaven> </configuration> <executions> <execution> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>oracle.jdeveloper.deploy.maven</groupId> <artifactId>maven-ojdeploy-plugin</artifactId> <version>1.0.0</version> <configuration> <ojdeploy>/scratch/jdoe/view_storage/pmed_jdev_l/oracle/jdeveloper/ jdev/bin/ojdeploy</ojdeploy> <workspace>/home/jdoe/jdeveloper/mywork/Application1/Application1.jws </workspace> <project>ViewController</project> <profile>Application1_ViewController_webapp</profile> <usemaven/> </configuration> <executions> <execution> <phase>install</phase> <goals> <goal>deploy</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
JDeveloperには、ojmakeプラグインとojdeployプラグインが用意されています。これらのプラグインを追加すると、JDeveloperで次の操作が可能になります。
-
Mavenビルド・ツールでのojmakeコマンドとojdeployコマンドの使用
-
POM作成時のプラグインの構成
-
プロジェクトへのデプロイメント・プロファイルの追加時におけるPOMでのプラグインの構成(まだ存在しない場合)
プラグインを追加するには、プロジェクトのPOMファイルをダブルクリックして、「プラグイン」タブをクリックします。「ビルド」列でojmakeプラグインとojdeployプラグインを選択し、「構成」セクションでパラメータを必要に応じて構成します。
ojmake
の使用方法、パラメータ、オプションおよび例を参照するには、jdeveloper_install
/jdeveloper/jdev/bin
のコマンドラインでojmake
と入力します。
連続配信と連続統合の理解
Mavenリポジトリは、コンパイル済コードやそのコードに関するメタデータなどのアーティファクトをホストします。Mavenプロジェクトは、ローカル・マシンに格納されるリモート・リポジトリのキャッシュであるローカル・リポジトリと、すべてのMavenアーティファクトおよびプラグインを含むリポジトリであるリモート・リポジトリに対してビルドされます。
連続配信とは、ソフトウェアのビルド・プロセスから実際の配信にまでわたる方法の機能拡張の1つです。連続配信では、連続統合の終了時点から始まり、ソフトウェアのリリース管理とエンド・ユーザーへのデプロイの自動化、ソフトウェアのビルドとテストの自動化のためのステップが実行されます。この目的は、ユーザーが要件を表明して、その要件に対応できる製品が配信されるまでの時間を最小化することです。これによって、大規模ソフトウェアのデプロイメント・プロジェクトによく見られる問題が回避されます。
連続統合とは、品質管理をわずかな労力で頻繁に実行することによって品質の向上とソフトウェア配信時間の短縮を図るためのソフトウェア・エンジニアリング方法の1つです。この特徴的な手法は次のとおりです。
-
バージョン管理システムの使用
-
開発者が毎日、メインのコードラインにコミットすること
-
製品がすべてのコミットに対してビルドされること
-
ビルドは自動化され、高速に処理されること
-
本番に似た環境に自動的にデプロイされること
-
自動テストを採用すること
-
ビルド違反者が誰でも確認できるように、すべてのビルドの結果が公開されること
-
配信可能なものを開発者、テスター、その他のステークホルダーが容易に利用できること
連続配信と連続統合の詳細は、『継続的統合によるアプリケーションの開発』を参照してください。