Javaで作成したアプリケーションを配布する場合には、実行に必要なファイルをまとめてアーカイブします。例えば、Javaアプリケーションであればjar形式のファイルに圧縮しますし、Webアプリケーションであればwar形式のファイルに圧縮します(war形式のファイルに関する詳細は、「Eclipseで.warファイルを作成する」)が詳しいので、合わせて参照してください)。
本TIPSでは、Antでwarファイルを作成する際に使用するjarタスクとwarタスクについて説明します。
今回のサンプルでは、下記のような「Antでファイル操作を行う」で構成したStrutsベースのシンプルなWebアプリケーションをアーカイブします。
sampleappフォルダをアーカイブし、プロジェクト直下にsampleapp.warと呼ばれるファイルを作成します。
warファイルを作成するには、以下のようにbuild.xmlに記述します。
<?xml version="1.0" encoding="Shift_JIS"?> |
この例では、distターゲットを使いwarファイルを作成しています。jarタスクのdestfile属性に出力するファイル名、basedir属性にアーカイブするディレクトリを指定します。
Antを実行すると、プロジェクト直下にsampleapp.warが作成されていることが確認できると思います。warファイル(jarファイル)はzip形式で圧縮されるので、市販の圧縮解凍ツールを使用することで、ファイルの内容を確認することができます。
なお、Antでは下記のjarコマンドと同じ処理が実行されています。
>cd project_root(プロジェクトのルートフォルダに移動した後) |
warタスクはwarファイル独自のフォルダ構成(WEB-INF等)を処理するために、jarタスクを拡張したものです。先ほどの処理をwarタスクで書き換えてみます。
<!-- warタスクによってwarファイルを作成 --> |
warタスクではwebxml属性にてweb.xmlの場所を明示的に指定する必要があります。また、WEB-INF配下にすでにweb.xmlが存在している場合は、警告メッセージが出力されるためexcludes属性にて除外設定をしています。
ただ、上記の例では、warタスクを利用するメリットが少ないように思われたかもしれません。jarタスクで十分まかなえるのに、なぜあえてwarタスクが用意されているのでしょうか。
warタスクでは下記の例のように、lib、classes、webinfといった子要素(配下タグ)を使用して、ファイルの配置場所を容易に指定することができます。
<!-- warタスクの子要素指定の例 --> |
このようにwarタスクではwarファイルの特別なフォルダ構成を簡易に取り扱うことができるというメリットがあります。既存のファイルをアーカイブするだけの簡単な処理であればjarタスクで問題ありませんが、複雑な構成の場合にはwarタスクを使用することをお勧めします。
Copyright © ITmedia, Inc. All Rights Reserved.