ビルド・マネージャについて

ビルド・マネージャはコンパイルを管理します。これは、ビルド・システムを構成するトランスレータのレジストリです。ビルド・マネージャは、JCompilerクラスのシングルトン・インスタンスにより表されます。ビルド・マネージャは、staticメソッドgetCompilerにより取得されます。

トランスレータは、1つ以上のタイプの入力ファイルを取得し、これらのファイルから固有のタイプの出力ファイルを生成します。たとえば、SQLJトランスレータはSQLJファイルをJavaファイルに変換します。コピー・トランスレータの入力タイプと出力タイプは同じですが、入力ファイルはソース・ディレクトリ・パスから取得され、出力ファイルはクラス・ディレクトリに置かれます。トランスレータは、Translatorを実装したシングルトン・インスタンスです。

ビルド・システムは、有向グラフに編成されるトランスレータの集合です。有向グラフでは、認識されたファイル・タイプはノードで表され、トランスレータはノードをつなぐリンクにより表されます。たとえば、SQLJからJavaJSPからJavaJavaからCLASSへのトランスレータのみ、およびGIFからGIFへのコピー・トランスレータを備えた単純なビルド・システムは、次のような構造になります。

前のパラグラフで説明されているビルド・システムのグラフ。

グラフでは、連鎖的に変換を行うことで複雑なコンパイルの実装が可能です。たとえば、SQLJファイルは一時Javaファイルに変換してコンパイルされます。次に、このファイルはクラス・ディレクトリのClassファイルに変換されます。

ビルド・システムは、アドインがロードされる起動時にアセンブルされます。ビルド・システムにトランスレータを追加するアドインでは、トランスレータをインスタンス化し、JCompilerregisterTranslatorメソッドに渡してこれを行います。このとき、ビルド・マネージャはトランスレータのgetInputTypesおよびgetOutputTypesメソッドを問い合せてリンクの先頭と末端を識別します。(複数の入力タイプ、出力タイプを持つトランスレータは、グラフで複数のリンクを定義します。)各ノードは、複数のトランスレータの末端とはなりません。したがって、各ファイル・タイプのコンパイル・パスが2つ以上になることはありません。この規則に違反するトランスレータの登録は拒否され、コンソールにエラーが表示されます。同様に、ループするコンパイル・パス(コピー・トランスレータの1リンク・ループ以外)を使用するトランスレータも拒否されます。

コンパイルは、ユーザーがナビゲータでプロジェクトまたはその他のノードを選択し、JDeveloperのユーザー・インタフェースから「再ビルド」または「メイク」を選択すると、インスタンス化されます。ビルド・マネージャはプロジェクトのファイルを収集し、連鎖的に実行するコンパイルのうち、最初の段階のコンパイルを後のコンパイルよりも先に実行するように順番に並べ、1つのセットとします。これは、各トランスレータに順に渡されます。たとえば、JSPからJavaへのトランスレータは、常にJavaからCLASSへのトランスレータに先行します。各トランスレータでは、変換可能なファイルをセットから抽出して変換します。さらにコンパイルが必要な場合は、出力ファイルをセットに返します。最終トランスレータ(JavaからCLASSへなど)およびコピー・トランスレータでは、出力ファイルをセットに返しません。セットが空になると、コンパイルが完了します。

トランスレータは、Translatorインタフェースを実装します。次のメソッドは、実際のコンパイル・プロセスに関わるTranslator実装の基本的なメソッドです。

ユーザーは、プロジェクト・プロパティ・ツリーの「コンパイラ」ブランチで、ページのコンパイル設定オプションを設定します。ダイアログを開くには、「ツール」->「プロジェクト・プロパティ」を選択します。カスタムの構成ページをインストールするには、JCompiler registerNavigableメソッドを使用します。

コンパイル・プロセスの監視を必要とする拡張機能では、BuildSystemListenerインタフェースおよびCopyListenerインタフェースを実装する必要があります。


IDEクラスについて

oracle.ide.Ide
oracle.ide.compiler.BuildSystemListener
oracle.ide.compiler.CopyListener
oracle.jdeveloper.compiler.JCompiler
oracle.jdeveloper.compiler.Translator

 

Copyright © 1997, 2004, Oracle.All rights reserved.