ここでは、IDE での標準プロジェクトと自由形式プロジェクトの構築の基本について説明し、さらに IDE でプロジェクトの構築時に使用する Ant 構築スクリプトを変更して、このプロセスをカスタマイズする方法についても説明します。
ここでは、次のことを学びます。
Ant 構築スクリプトの使用方法
Ant 構築スクリプトはターゲットからなる XML ファイルで、ターゲットには、タスクが含まれます。Ant タスクは実行可能な小型のコードで、ソースコードに対する処理命令を管理します。たとえば、コードをコンパイルするには javac タスクを使用し、クラスを実行するには java タスクを使用するなどします。使用できる Ant には、組み込みの Ant タスク、他社製の Ant タスク、またはユーザーが作成した Ant タスクがあります。IDE でプロジェクトを開発する際には Ant の知識は必要ありません。Ant を学ぶためのリソースは、http://ant.apache.org/resources.html で紹介されています。
次の方法で、Ant 構築スクリプトを使用して、プロジェクトを構築します。
-
標準プロジェクト。標準プロジェクトでは、IDE は、「新規プロジェクト」ウィザードおよびプロジェクトの「プロジェクトプロパティー」ダイアログで入力されたオプションに基づいて構築スクリプトを生成します。基本的なコンパイルオプションと実行時オプションはすべて「プロジェクトプロパティー」ダイアログに設定可能で、IDE が、その設定に基づいてプロジェクトの Ant スクリプトを自動的に更新します。Ant の操作方法を知っている場合は、標準プロジェクトの Ant スクリプトをカスタマイズしたり、プロジェクト用の独自の Ant スクリプトを作成したりできます。
-
自由形式プロジェクト。自由形式プロジェクトの場合は、既存の Ant スクリプトを使用して、構築、実行、デバッグなどの IDE アクションに対するターゲットを提供します。
プロジェクト、パッケージ、およびファイルの構築
IDE におけるコンパイルは簡単です。プロジェクトのコンパイル時のクラスパスの設定が正しいことを確認したら、コンパイルするプロジェクトかパッケージ、ファイルのいずれかを選択して適切な「構築」または「コンパイル」コマンドを選択するだけです。これで、コンパイルが行われます。
IDE でプロジェクト、パッケージ、またはファイルをコンパイルするには、「プロジェクト」ウィンドウでその項目を選択し、次のいずれかの操作を行います。
-
主プロジェクトを構築する場合は、メインメニューから「構築」>「主プロジェクトを構築」(F11) を選択します。または、ツールバーにある「構築」ボタンをクリックします。
-
主プロジェクトの生成物を削除して構築する場合は、メインメニューから「構築」>「主プロジェクトの生成物を削除して構築」(Shift-F11) を選択します。または、ツールバーにある「プロジェクトの生成物を削除して構築」ボタンをクリックします。
-
プロジェクトを構築する場合は、「プロジェクト」ウィンドウで、プロジェクトノードを右クリックし、「プロジェクトを構築」を選択します。
-
プロジェクトの生成物を削除する場合は、「プロジェクト」ウィンドウで、プロジェクトを右クリックし、「プロジェクトの生成物を削除」を選択します。
-
パッケージをコンパイルする場合は、パッケージを右クリックし、「パッケージをコンパイル」(F9) を選択します。
-
ファイルをコンパイルする場合は、ファイルを右クリックし、「ファイルをコンパイル」(F9) を選択します。この操作は、「構築」>「ファイルをコンパイル」(F9) を選択する操作と同じです。自由形式プロジェクトの場合、このコマンドはデフォルトで無効になっています。IDE で現在選択されているファイルをコンパイルするための Ant ターゲットを作成し、そのターゲットを「ファイルをコンパイル」コマンドにマッピングする必要があります。
次の項で説明するように、コンパイルのコマンドを実行すると、コンパイルエラーを含む出力が「出力」ウィンドウに表示されます。
「ファイル」ウィンドウで標準プロジェクトのプロジェクトディレクトリのノードを展開すると、IDE によってクラスが build フォルダにコンパイルされることがわかります。また、プロジェクトソースから Java プロジェクトの JAR ファイルが自動的に構築されます。JAR ファイルは、プロジェクトフォルダの dist ディレクトリに生成されます。自由形式プロジェクトの場合、出力ファイルの作成は、Ant スクリプトで制御します。
コンパイルエラーの修正
IDE では、出力メッセージやコンパイルエラーは「出力」ウィンドウに表示されます。この複数のタブがあるウィンドウが自動的に表示されるのは、コンパイルエラーが生成された場合、プログラムのデバッグを行なった場合、Javadoc ドキュメントの生成を行なった場合などです。このウィンドウは、「ウィンドウ」>「出力」(Ctrl-4) を選択して手動で表示することもできます。
「出力」ウィンドウの重要な機能の 1 つは、プログラムのコンパイル中に見つかったエラーを通知することです。エラーメッセージは、次に示すように青い下線付きの文字で表示され、ソースコード内のエラーのある行にリンクされています。「出力」ウィンドウは、Ant 構築スクリプトの実行で検出されたエラーへのリンクも提供します。「出力」ウィンドウでエラーのリンクをクリックすると、ソースエディタは自動的にそのエラーを含む行にジャンプします。F12 キーでファイル内の次のエラーへ、Shift-F12 キーで前のエラーに移動することもできます。
コンパイルエラーを表示する「出力」ウィンドウ
ファイルのコンパイルや実行、デバッグなどの、Ant スクリプトが実行するすべてのアクションの出力は、「出力」ウィンドウの同じタブに送信されます。「出力」ウィンドウに表示されているメッセージを保存する必要がある場合は、その部分をコピーして別のファイルにペーストします。また、「ツール」>「オプション」を選択し、「その他」カテゴリの Ant ノードをクリックして、「完了したプロセスの出力タブを再利用」プロパティーのチェックボックスをオフにすることで、ターゲットが変わるたびに、コマンド出力が「出力」ウィンドウの新しいタブに出力されるように Ant を設定することもできます。
出力ファイルのフィルタ
JAR ファイルまたは WAR ファイルの作成では、コンパイルされた .class ファイルや、ソースディレクトリにあるその他リソースファイル (リソースバンドルや XML ドキュメントなど) だけを含めるのが一般的です。デフォルトのフィルタは、この操作を自動的に行います。すなわち、出力ファイルから .java、.nbattrs、および .form ファイルをすべて除外します。
正規表現を使用して、追加のフィルタを作成し、出力ファイルを制御できます。除外するファイルを指定するには、「プロジェクト」ウィンドウでプロジェクトを右クリックし、「プロパティー」を選択して、「プロジェクトプロパティー」ダイアログを開きます。左区画にある「パッケージング」をクリックします。右区画のテキストボックスに正規表現を入力し、JAR または WAR ファイルのパッケージ時に除外するファイルを指定します。デフォルトの表現に加えて、使用可能なその他の正規表現には次のものがあります。
|
正規表現
|
説明
|
|
\.html$
|
すべての HTML ファイルを除外する。
|
|
\.java$
|
すべての Java ファイルを除外する。
|
|
(\.html$)|(\.java$)
|
すべての HTML ファイルと Java ファイルを除外する。
|
|
(Key)|(\.gif$)
|
すべての GIF ファイル、および Key が名前に入っているファイルを除外する。
|
正規表現の構文については、jakarta.apache.org を参照してください。
構築プロセスのカスタマイズ
Ant スクリプトをカスタマイズして、プロジェクトの構築方法をカスタマイズできます。たとえば、現在選択されているファイルをコンパイルする Ant ターゲットを作成し、そのターゲットを IDE の「ファイルを実行」コマンドにマッピングすることができます。
標準プロジェクトでは、Ant スクリプトはプロジェクトフォルダに保存されます。標準プロジェクトの主 Ant スクリプトは build.xml です。IDE は、IDE コマンドが実行されるたびに build.xml 内のターゲットを呼び出します。このファイルには、build-impl.xml からターゲットをインポートするインポート文が 1 つ含まれます。build.xml では、build-impl.xml からインポートされるターゲットをオーバーライドしたり、新しいターゲットを作成したりできます。
自由形式プロジェクトでは、既存の Ant スクリプト内のターゲットを使用して、アプリケーションの構築、実行、生成物の削除、テスト、デバッグを行います。Ant スクリプトに、これらの機能のターゲットが含まれていない場合、その機能は使用できません。そうした機能を実現するには、Ant スクリプトまたは補助的な Ant スクリプトで、ターゲットを作成します。次に、IDE でコマンドをそれらのターゲットにマッピングできます。
標準プロジェクトのファイルの構築
標準プロジェクトの build-impl.xml は、プロジェクトの構築、実行、デバッグ用のすべての命令が含まれる Ant スクリプトです。このファイルは、絶対に編集しないでください。ただし、このオーバーライドを目的として、定義されている Ant ターゲットを確認するためにこのファイルを開き、そのあとに、build.xml を変更することによってターゲットをオーバーライドしたり、新しいターゲットを作成したりすることは問題ありません。
標準プロジェクトの場合は、次のことを行うことによって構築プロセスをカスタマイズできます。
-
「新規プロジェクト」ウィザードでプロジェクトを作成するとき、あるいはプロジェクトの作成後「プロジェクトプロパティー」ダイアログで、クラスパスや JAR フィルタなどの基本的なオプションを入力する。
-
nbproject/project.properties 内のプロパティーを編集する。このファイルは、ソースおよび出力フォルダの場所などの、プロジェクトに関する重要情報を含む Ant プロパティーを格納します。このファイルのプロパティーは書き換えることができます。ただし、このファイルを編集するときは注意してください。たとえば、出力フォルダは、プロジェクトの生成物を削除するたびに削除されます。したがって、出力フォルダとソースフォルダを同じディレクトリに保存する場合は、最初に必ず clean ターゲットを設定して出力フォルダを削除しないようにしてください。
-
次のいずれかを実行して、既存の Ant ターゲットをカスタマイズする、または新しい Ant ターゲットを作成する。
-
Ant ターゲットの実行前または実行後に処理する命令を追加する。build-impl.xml 内の主要ターゲットのどれにも、build.xml 内でオーバーライド可能な -pre および -post ターゲットが 1 つずつあります。たとえば、通常のプロジェクトで RMI が機能するようにするには、build.xml に次を入力します。
<target name="-post-compile">
<rmic base="${build.classes.dir}" includes="**/Remote*.class"/>
</target>
-
Ant ターゲット内の命令を変更する。build-impl.xml から build.xml にターゲットをコピーし、ターゲットに必要な変更を加えます。
-
build.xml に新しいターゲットを作成する。IDE の任意の既存のターゲットの依存関係に新しいターゲットを追加することもできます。build.xml で既存のターゲットをオーバーライドしてから、既存のターゲットの depends プロパティーに新しいターゲットを追加します。たとえば、run ターゲットの依存ファイルに new-target ターゲットを追加するには、次のように指定します。
<target name="new-target">
<!-- ターゲット本体... -->
</new-target>
<target name="run" depends="new-target,myprojname-impl.run"/>
build.xml ファイルには run ターゲットの本体をコピーする必要はありません。
次の表は、JAR ファイルの再定義で行う一般的な作業をまとめています。
|
行う作業
|
手順
|
|
JAR ファイルに追加するファイルを指定する。
|
「プロジェクト」ウィンドウでプロジェクトのノードを右クリックし、「プロパティー」を選択します。「構築」の下の「パッケージング」サブノードをクリックし、「JAR ファイルから除外」フィールドでフィルタと圧縮の設定をします。詳細については、出力ファイルのフィルタを参照してください。
|
|
JAR ファイルの名前と場所を変更する。
|
「ファイル」ウィンドウでプロジェクトフォルダ内の nbproject フォルダに移動し、ソースエディタで project.properties を開きます。dist.jar プロパティーに JAR ファイルのフルパスを入力します。
|
|
JAR ファイル用のマニフェストファイルを指定する。
|
project.properties 内の manifest.file プロパティーにマニフェストファイルの名前を入力します。このファイル名は、プロジェクトの build.xml ファイルを基準にした相対パスで指定する必要があります。Java アプリケーションテンプレートを使用している場合は、IDE によってマニフェストファイルが自動的に作成されます。
|
|
プロジェクトの JAR ファイルの生成を無効にする。
|
「ファイル」ウィンドウでプロジェクトフォルダを開き、build.xml を開きます。jar ターゲットを上書きし、コンテンツなし、依存関係なしに設定します。たとえば build.xml に次の行を追加します。
<target name="jar" />
|
自由形式プロジェクトのファイルの構築
自由形式プロジェクトでは、既存の Ant スクリプト内のターゲットを使用して、アプリケーションの構築、実行、生成物の削除、テスト、デバッグを行います。Ant スクリプトに、これらの機能のターゲットが含まれていない場合、その機能は使用できません。そうした機能を実現するには、Ant スクリプトまたは補助的な Ant スクリプトで、ターゲットを作成します。次に、IDE でコマンドをそれらのターゲットにマッピングできます。
IDE コマンドを実行する場合に、そのコマンドのターゲットがない場合は、IDE でターゲットを自動的に作成することができます。IDE でターゲットが生成される場合、ターゲットは個別の構築スクリプト内に生成され、自動的にコマンドにマッピングされます。
自由形式プロジェクトで Ant ターゲットを作成する例については、次の記事を参照してください。
独自の Ant タスクの作成
独自の Ant タスクを作成し、Ant に組み込まれているタスクが提供する機能を拡張することができます。こうしたカスタムタスクは、プロパティーの定義や入れ子要素の作成、addText メソッドを使ったタグ間のテキストの直接作成によく使用されます。
IDE でカスタム Ant タスクを作成するには、Ctrl-N キーを押し、「Ant 構築スクリプト」フォルダから「カスタムタスク」テンプレートを選択します。カスタム Ant タスクファイルを作成すると、ソースエディタにテンプレートが開きます。テンプレートには、多くの Ant タスクで一般的に行われる処理用のサンプルコードが含まれています。各コードセクションの終わりに、Ant スクリプト内でのタスクの使用方法が示されています。
プロジェクトコマンドへの独自の Ant ターゲットのマッピング
自由形式プロジェクトの場合は、Ant スクリプト内のターゲットに自分で IDE コマンドをマッピングします。そうすることによって、たとえば、プロジェクトのコンテキストメニューに「プロジェクトをデバッグ」ターゲットの項目を追加することができます。
「プロジェクトプロパティー」ダイアログの左側パネルで「構築と実行」をクリックしてみてください。
「プロジェクトプロパティー」ダイアログでのターゲットの実行
各コマンドに対して、ドロップダウンメニューから Ant ターゲットを選択します。ドロップダウンメニューは、Ant スクリプトにあるターゲットがすべて含まれます。ただし、別の Ant スクリプトからターゲットをインポートするための <import> 文が Ant スクリプトで使用されている場合、「プロジェクトプロパティー」ダイアログのドロップダウンリストに、そのターゲットは表示されません。そうしたターゲットにコマンドをマッピングするには、リストにターゲット名を入力します。
project.xml ファイルを手動で編集することによって、個別ファイルに実行するコマンドなどをマッピングすることもできます。詳細は、Advanced Free-form Project Configurationを参照してください。