特集
2004/04/23 17:45 更新


特集:第3回 Strutsをチーム開発に生かす「XDoclet」の活用 (6/8)


2. Antビルドファイルの作成

 ソースコードが作成できたら、次はAntビルドファイルを作成する。XDocletはAntタスクとして提供されているので、XDocletの機能をAntに組み込むための設定が必要となる(図3)。

fig004.gif

図3■Antビルドファイルの作成例(一部分)


a. ビルドに必要なクラスパス(図3−a)

  • XDocletバイナリ配布を展開したディレクトリ内のlibディレクトリ内のすべてのJARファイル
  • Strutsバイナリ配布を展開したディレクトリ内のlibディレクトリ内のJARファイル。アプリケーションによって必要となるJARファイルは異なるが、すべてにクラスパスを通しておけば問題はない。
  • Servlet APIライブラリ。Tomcat4.1.xでは、Tomcatインストールディレクトリ/common/lib/servlet.jarだ(※3)。

※3)ここで使用される変数「${catalina.home}」は、ビルドファイル内では設定されていない。どこで設定されているかというと、build.xmlと同一ディレクトリにある、build.propertiesファイル内にある。Tomcatのインストールディレクトリのパスは環境によって異なる場合があり、さらにプラットフォームが変わればパス区切り文字も異なる。このような環境依存、プラットフォーム依存となるような値はbuild.xmlには記述せずに、外部プロパティファイルに記述することを推奨する。こうすることによって、ビルドファイルの移植性、マルチプラットフォーム性を確保することができるのだ。

 プロパティファイルは「キー = 値」という形式で記述するが、build.xmlからは${キー}という形式で値を取得することができる。外部プロパティファイルを使用する際にはビルドファイル内に<property file="プロパティファイル名" />という設定が必要となる。

b. XDocletの機能をAntタスクに組み込む(図3−b)

 Antには、標準で組み込まれている機能以外にも自作のタスクや外部ベンダより提供されるタスクを組み込んで使用することができる。XDocletはそれを利用して、Antタスクとして提供されている。外部より提供されるタスクや自作のタスクを組み込むには、<taskdef>要素を使う。name属性には任意の名前、classname属性に提供されるタスクのクラス名、classpathref属性に提供されるタスクのクラスを検索するためのクラスパス(「a.」で設定している)を指定する。この例では、XDocletより提供されているタスクを"webdoclet"という名前で使用することができるようになる。

c. 定義したタスクを呼び出す(図3−c)

 上記「b.」の手順で定義したタスクを呼び出す。destdir属性に生成される設定ファイルの出力ディレクトリを指定する。もしソースコードのJavadocコメント部分に標準JavadocタグおよびXDocletタグ以外の@から始まるタグが記述されている場合は、XDocletによる処理対象から除外するためにexcludetags属性にカンマ区切りで指定する。Antはファイルのタイムスタンプをチェックし、標準では更新されたファイルのみを処理する。しかし、タイムスタンプを無視して常に最新ファイル生成を強いる場合には、force促成にtrueを設定すればよい。また、ビルド中に詳細な情報を標準出力に表示したい場合には、verbose属性をtrueに設定する。

 このタスクにネストさせて、<fileset>要素でXDocletの処理対象となるソースコードのディレクトリを指定する。そして、Struts設定ファイルを生成するには、<strutsconfigxml>要素が必要になる。XDocletはデフォルトではStruts1.0準拠のStruts設定ファイルを生成するので、Struts1.1準拠の設定ファイルを生成したい場合はversion属性で「1.1」を指定する必要がある。また、destdir属性で生成されたファイルの出力先を指定する。

3. ビルド

 ここまでくれば、通常の手順でAntをつかってビルド可能だ。つまり、準備処理→XDocletの実行(=設定ファイルの生成)→コンパイル→デプロイという処理をAntで行えばよい。

4. マージファイル

 ここまで紹介した手順では、Struts設定ファイルに<form-bean>要素や<action>要素を自動生成できるが、その他の要素(<data-sources>要素(※4)や、<controller>要素、<global-forwards>要素、<global-exception>要素など)はどうするのだろうか? Strutsアプリケーションの開発を経験された人であれば分かると思うが、これらの要素はいちど記述すると複数の開発者が頻繁に変更をする個所ではない。このような個所については、XDocletのマージファイルという機能を利用するといい。これは、共通部分を記述した別ファイルをあらかじめ用意しておき、ビルドの際にマージ(統合)するという機能だ。別ファイルとして用意しておくファイルの名前は決められている。たとえば、<global-eception>要素に埋め込まれる内容は、global-exceptions.xmlという名前で用意する決まりがある。詳細は表3を参照にしてほしい。

表3■マージファイル
ファイル名 内  容
struts-data-sources.xml <data-sources> 要素に統合される
struts-forms.xml XDocletが生成するもの以外に<form-beans>要素に追加したいActionFormがあれば、用意する
global-exceptions.xml <global-exceptions> 要素に統合される
global-forwards.xml <global-forwards> 要素に統合される
struts-actions.xml XDocletが生成するもの以外に<action-mappings>要素に追加したいアクションマッピング定義があれば、用意する
actions.xml 非推奨(struts-actions.xmlに変更された)。以前のバージョンとの互換性のために残されている
struts-controller.xml <controller> 要素に統合される
struts-message-resources.xml <message-resources> 要素に統合される
struts-plugins.xml <plug-in> 要素に統合される


※4)Strutsでは、DataSource管理を行う機能が実装されているが、実際にはこの機能は使用せず、コンテナやデータベースから提供されるDataSourceを使用するのが望ましい。

前のページ | 1 2 3 4 5 6 7 8 | 次のページ

[阿島哲夫,ITmedia]

Copyright © ITmedia, Inc. All Rights Reserved.