7.2.2 ビルドファイルの編集・実行

プロジェクトの種類によって,ビルドファイル(build.xml)に記述する内容が異なります。それぞれのプロジェクトの種類に合わせて,ビルドファイルを編集してください。ビルドファイルを作成する順序は次のとおりです。

  1. EJBプロジェクトのビルド
  2. 動的Webプロジェクトのビルド
  3. エンタープライズアプリケーションプロジェクトのビルド

この流れに沿って,各プロジェクトのビルドファイルの編集と実行について説明します。

<この項の構成>
(1) EJBプロジェクトのビルド
(2) 動的Webプロジェクトのビルド
(3) エンタープライズアプリケーションプロジェクトのビルド

(1) EJBプロジェクトのビルド

EJBプロジェクトのビルドファイルに次の内容を記述します。ビルドファイルを実行すると,EJB-JARファイルが生成されます。

表7-1 EJBプロジェクトのビルドファイルの例

行番号記述例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<project name="Bank_EJB" default="create" basedir="./">
<property environment="myEnv"/>
<property name="classPath" value="${myEnv.COSMINEXUS_HOME}/CC/client/lib/j2ee-javax.jar"/>
<property name="ejbArchiveName" value="Bank_EJB.jar"/>
<property name="javacPath" value="${myEnv.COSMINEXUS_HOME}/jdk/bin/javac.exe"/>
<property name="tempFolder" value="ant"/>
<target name="create">
<delete file="./${ejbArchiveName}"/>
<mkdir dir="./${tempFolder}"/>
<copy todir="./${tempFolder}">
<fileset dir="./src" excludes="**/*.java"/>
</copy>
<javac srcdir="./src" destdir="./${tempFolder}" executable="${javacPath}" classpath="${classPath}"/>
<jar destfile="./${ejbArchiveName}" basedir="./${tempFolder}"/>
<delete dir="./${tempFolder}"/>
</target>

</project>

ビルドファイルの各行の意味は,次のとおりです。

表7-2 EJBプロジェクトのビルドファイルの記述内容

行番号記述内容の意味
1XML宣言です。
2ビルドファイルのルートを指定します。
3プロパティに,ビルドファイルからシステム環境変数を参照する設定を追加します。
4プロパティに,アプリケーションサーバのJ2EEライブラリのパスを指定します。
5プロパティに,EJBプロジェクトで生成するアーカイブファイル名の指定を追加します。
6プロパティに,アプリケーションサーバのjavacコマンドのパスを指定します。
7プロパティに,ビルドで使用する一時ディレクトリ名を指定します。ディレクトリ名は任意の名称を指定します。
8ターゲット「create」の開始タグです。
9既存のアーカイブファイルを削除します。
10ビルド用の一時ディレクトリを作成します。
11ビルド用の一時ディレクトリに,アーカイブに含めるファイルをコピーします。
12Javaソースをコピー対象外にします。
1311行目のコピータスクの終了タグです。
14Javaソースをコンパイルします。コンパイルにはアプリケーションサーバのjavacコマンドを使用します。
15ビルド用の一時ディレクトリ以下のフォルダおよびファイルをアーカイブして,jarファイルを生成します。
16ビルド用の一時ディレクトリを削除します。
178行目のターゲット「create」の終了タグです。
18ビルドファイルの終了タグです。

(2) 動的Webプロジェクトのビルド

動的Webプロジェクトのビルドファイルに,次の内容を記述します。ビルドファイルを実行すると,WARファイルが生成されます。

なお,動的WebプロジェクトのビルドファイルはEJBプロジェクトのアーカイブファイルを参照しています。動的Webプロジェクトをビルドする前に,必ずEJBプロジェクトをビルドしてください。

表7-3 動的Webプロジェクトのビルドファイルの例

行番号記述例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version="1.0" encoding="UTF-8"?>
<project name="Bank_Web" default="create" basedir="./">
<property environment="myEnv"/>
<property name="cjjspcdir" value="${myEnv.COSMINEXUS_HOME}/CC/web/bin"/>
<property name="ejbJarPath" value="../Bank_EJB/Bank_EJB.jar"/>
<property name="classPath" value="${myEnv.COSMINEXUS_HOME}/CC/client/lib/j2ee-javax.jar;${ejbJarPath}"/>
<property name="javacPath" value="${myEnv.COSMINEXUS_HOME}/jdk/bin/javac.exe"/>
<property name="tempFolder" value="ant"/>
<property name="webArchiveName" value="Bank_Web.war"/>
<property name="webProjectPath" value="E:/eclipse/workspace/Bank_Web/"/>
<property name="webRoot" value="WebRoot"/>
<target name="compile">
<exec executable="${cjjspcdir}/cjjspc.bat" newenvironment="true">
<arg line='-classpath ${ejbJarPath}'/>
<arg line='-source 1.5'/>
<arg line='-pageencoding UTF-8'/>
<arg line='-root "${webProjectPath}/${tempFolder}"'/>
</exec>
</target>
<target name="create">
<delete file="./${webArchiveName}"/>
<mkdir dir="./${tempFolder}"/>
<copy todir="./${tempFolder}">
<fileset dir="./${webRoot}" excludes="**/classes/**/*.class"/>
</copy>
<javac srcdir="./src" destdir="./${tempFolder}/WEB-INF/classes" executable="${javacPath}" classpath="${classPath}"/>
<antcall target="compile"/>
<war destfile="./${webArchiveName}" basedir="./${tempFolder}" webxml="./${tempFolder}/WEB-INF/web.xml" excludes="WEB-INF/web.xml"/>
<delete dir="./${tempFolder}"/>
</target>

</project>

ビルドファイルの各行の意味は,次のとおりです。

表7-4 動的Webプロジェクトのビルドファイルの記述内容

行番号記述内容の意味
1XML宣言です。
2ビルドファイルのルートを指定します。
3プロパティに,ビルドファイルからシステム環境変数を参照する指定を追加します。
4プロパティに,アプリケーションサーバのJSP事前コンパイル用コマンドのパスを指定します。
5プロパティに,EJBプロジェクトのアーカイブのパスを指定します。
6プロパティに,アプリケーションサーバのJ2EEライブラリ,およびEJBプロジェクトのアーカイブのパスを指定します。
7プロパティに,アプリケーションサーバのjavacコマンドのパスを指定します。
8プロパティに,ビルドで使用する一時ディレクトリ名を指定します。ディレクトリ名は任意の名称を指定します。
9プロパティに,動的Webプロジェクトで生成するアーカイブファイル名を指定します。
10プロパティに,動的Webプロジェクトの絶対パスを指定します。
11プロパティに,動的Webプロジェクトのルートを指定します。
12JSP事前コンパイル用のターゲット「compile」の開始タグです。
13アプリケーションサーバのJSP事前コンパイル用のコマンドを実行します。
14JSP事前コンパイルでEJBプロジェクトのクラスを参照する場合は,EJBプロジェクトのクラスパスを指定します。
15コマンドの引数を指定します。指定したバージョンのJava言語を使用して事前コンパイルします。
16コマンドの引数として,JSPのデフォルトの文字エンコーディングを指定します。
17コマンドの引数として,動的Webプロジェクトのルートに一時ディレクトリを指定します。
1812行目のコマンド実行の終了タグです。
1911行目のターゲット「compile」の終了タグです。
20ターゲット「create」のルートを指定します。
21既存のアーカイブファイルを削除します。
22ビルド用の一時ディレクトリを作成します。
23アーカイブに含めるファイルを一時ディレクトリにコピーします。
24Javaクラスをコピー対象外にします。
2521行目のコピータスクの終了タグです。
26Javaソースをコンパイルします。コンパイルにはアプリケーションサーバのjavacコマンドを使用します。
27JSP事前コンパイル用のターゲット「compile」を呼び出します。JSP事前コンパイルをしない場合は記述しません。
28一時ディレクトリ以下のディレクトリおよびファイルをアーカイブして,WARファイルを生成します。
29一時ディレクトリを削除します。
3018行目のターゲット「create」の終了タグです。
31ビルドファイルの終了タグです。

JSP事前コンパイルで,配布先のJ2EEサーバでJSPデバッグ機能が有効な場合,cjjspcコマンドに-debuggingオプションを指定する必要があります。詳細は,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(Webコンテナ)」の「2.4.2 JSPデバッグ機能の使用手順」を参照してください。

(3) エンタープライズアプリケーションプロジェクトのビルド

エンタープライズアプリケーションプロジェクトのビルドファイルに,次の内容を記述します。ビルドファイルを実行すると,EARファイルが生成されます。

なお,エンタープライズアプリケーションプロジェクトをビルドすると,EJBプロジェクト,動的Webプロジェクト,エンタープライズアプリケーションプロジェクトの順にビルドされて,EJB-JARファイルとWARファイルを含むEARファイルが生成されます。

エンタープライズアプリケーションプロジェクトをビルドする前に,必ずEJBプロジェクトおよび動的Webプロジェクトのビルドファイルを作成してください。

表7-5 エンタープライズアプリケーションプロジェクトのビルドファイルの例

行番号記述例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<project name="Bank" default="create" basedir="./">
<property name="earArchiveName" value="bank.ear"/>
<property name="ejbArchiveName" value="Bank_EJB.jar"/>
<property name="ejbProjectName" value="Bank_EJB"/>
<property name="webArchiveName" value="Bank_Web.war"/>
<property name="webProjectName" value="Bank_Web"/>
<property name="excludes" value=".classpath,.mymetadata,.project,build-user.xml"/>
<target name="create">
<ant antfile="../${ejbProjectName}/build.xml" dir="../${ejbProjectName}" inheritall="false"/>
<ant antfile="../${webProjectName}/build.xml" dir="../${webProjectName}" inheritall="false"/>
<delete file="./${earArchiveName}"/>
<ear destfile="./${earArchiveName}" basedir="./" appxml="./META-INF/application.xml" excludes="${excludes}">
<fileset file="../${ejbProjectName}/${ejbArchiveName}"/>
<fileset file="../${webProjectName}/${webArchiveName}"/>
</ear>
</target>

</project>

ビルドファイルの各行の意味は,次のとおりです。

表7-6 エンタープライズアプリケーションプロジェクトのビルドファイルの記述内容

行番号記述例
1XML宣言です。
2ビルドファイルのルートを指定します。
3プロパティに,エンタープライズアプリケーションプロジェクトで生成するアーカイブファイル名を指定します。
4プロパティに,EJBプロジェクトで生成するアーカイブファイル名を指定します。
5プロパティに,EJBプロジェクトの名称を指定します。
6プロパティに,動的Webプロジェクトで生成するアーカイブファイル名を指定します。
7プロパティに,動的Webプロジェクトの名称を指定します。
8プロパティに,EARファイル生成時に除くファイルを指定します。
9ターゲット「create」の開始タグです。
10EJBプロジェクトのビルドファイルを実行します。
11動的Webプロジェクトのビルドファイルを実行します。
12既存のアーカイブファイルを削除します。
13EARファイルを生成します。
14EARファイルに含めるEJB-JARファイルを指定します。
15EARファイルに含めるWARファイルを指定します。
1613行目のearタスクの終了タグです。
179行目のターゲット「create」の終了タグです。
18ビルドファイルの終了タグです。