Antでアプリケーションのデプロイ作業を効率化するJavaTips 〜Apache/Jakarta編

» 2004年08月24日 10時00分 公開
[青木淳夫@IT]

 Antは、開発やリリース時の一連の処理を自動化できる、Javaベースのビルドツールです。コンパイルプロセスは、EclipseやJBuilderなどの統合開発環境の利用によっても簡略化することが可能です。しかし、warファイルのパッケージングやUnitテストなど、複雑な処理を行う際はAntを利用した方が効率的です。また、環境に依存しないJavaの利点を生かし、開発環境と異なる環境でも設定ファイル(build.xml)を変更せずに、簡単にコンパイルが行えます。

 本稿では、豊富なAntの機能の中から、開発の基本となるコンパイルとアプリケーションの実行について説明します。

操作手順

(1)Antのダウンロード

 Antは、Apache Antプロジェクトの公式サイト(http://ant.apache.org)から入手できます。その時点での最新の安定版をダウンロードしてください。

 設定など、Antの詳細については、「連載:現場に活かすJakarta Project」の「第2回 AntでJavaのビルドを簡単にする」を参照してください。また、Eclipse上からAntを実行すれば、複雑な設定が不要なうえ、コードアシスト機能も利用できて便利なので、設定ファイルの記述にはEclipseを使用することをお勧めします。EclipseからAntを利用する方法については、「連載:Eclipse徹底活用」の「第1回 Eclipseからビルドツール「Ant」を使う」を参照してください。

(2)自動化のための処理手順

 本稿では、下記のようなフォルダ構成の環境で、

└─project_root
    │  build.xml
    │
    ├─bin
    ├─lib
    │      hoge.jar
    │      moge.jar
    │
    └─src
        └─to
            └─msn
                └─wings
                        Sample.java


  1. srcフォルダ下にあるJavaファイルをコンパイル
  2. コンパイルされたクラスファイルをbinフォルダに出力
  3. binフォルダ下にあるクラスファイルを実行

という一連の手順を、javacタスクとjavaタスクを使用して自動化する例を紹介します。

 なお、srcフォルダ下にあるSample.javaは、「Hello World!」という文字列を出力するだけの単純なプログラムとします。また、libフォルダ内にあるhoge.jarとmoge.jarを参照しているものとします。

(3)設定ファイルの設定

 以下は、前述した手順をAntで実行する設定ファイルです。

Build.xml
<?xml version="1.0" encoding="Shift_JIS"?>
<!-- デフォルトでallターゲットを実行 -->
<project name="project" default="all" basedir=".">
        <description>Javac_Javaタスクのサンプル</description>

        <!-- 変数定義 -->
        <property name="source" value="src" />
        <property name="build" value="bin" />
        
        <!-- コンパイルに必要なライブラリをクラスパスに設定 -->
        <path id="classpath">
            <pathelement location="lib/hoge.jar"/>
                <pathelement location="lib/moge.jar"/>
        </path>
        
        <!-- allターゲット -->
        <target name="all" depends="compile,execute" 
        description="プログラムをコンパイルし実行します。" />

        <!-- compileターゲット -->
        <target name="compile" description="コンパイル">
                <echo message="コンパイル開始..." />
                <javac srcdir="${source}" 
                       destdir="${build}" 
                       debug="on" >
                        <classpath>
                                <fileset refid="classpath" />
                        </classpath>
                </javac>
                <echo message="コンパイル完了..." />
        </target>

        <!-- executeターゲット -->
        <target name="execute" description="プログラム実行">
                <echo message="実行開始..." />
                <java classname="to.msn.wings.Sample"
                        classpath="${build}" 
                        classpathref="https://atmarkit.itmedia.co.jp/ait/articles/0408/24/classpath" />        
                <echo message="実行完了..." />
        </target>

</project>


(4)Antの実行

 設定ファイルには、コンパイルを行うcompileターゲットとプログラムの実行を行うexecuteターゲット、さらにその両方を実行するallターゲットが定義されています。ここでは、「ant all」を実行して、コンパイルとプログラム実行の両方が行われていることを確認します。

実行結果
Buildfile: C:\java\eclipse30\workspace\Sample\build.xml
compile:
[echo] コンパイル開始...
[javac] Compiling 1 source file to C:\java\eclipse30\workspace\Sample\bin
[echo] コンパイル完了...
execute:
[echo] 実行開始...
[java] Hello World!
[echo] 実行完了...
all:
BUILD SUCCESSFUL
Total time: 1 second


注意:javacタスクは、不要なコンパイルを行わないようファイルのタイムスタンプを判定します。そのため、ソースとなるSample.javaがSample.classより古いファイルの場合、コンパイルは行われません。

各タスクについて

・javacタスク

 本稿では、compileターゲットにjavacタスクを用いてコンパイルを行います。

javacタスクの主要属性
属性名称 説明 必須
srcdir javaのソースファイルがあるフォルダを指定 Yes
destdir クラスファイルを出力するフォルダを指定 No
classpath クラスパスを指定 No
debug デバッグ情報を付けるかどうかを指定(デフォルトoff) No

・javaタスク

 本稿では、executeターゲットにjavaタスクを用いてプログラムを実行します。

javaタスクの主要属性
属性名称 説明 必須
classname 実行するJavaのクラス名 Yes
jar 実行するjarファイル名 No
classpath クラスパスを指定 No
classpathref 定義済みのクラスパスのIDを指定 No
fork 別のVMで実行 No

 javaタスクは、特定のクラスファイルに対して動作するため、classnameかjarのいずれか1つの属性設定が必須です。なお、Javaクラスに引数を指定するにはargタグを利用し、VMに引数を渡すにはjvmargタグを利用します。

・echoタスク

 echoタスクを使用すると、指定したメッセージを出力できます。

echoタスクの主要属性
属性名称 説明 必須
message 出力するメッセージ Yes
file 出力するファイル名(指定しない場合は標準出力に表示) No

 javacタスクとjavaタスクの属性は、基本的にjavacコマンドとjavaコマンドのパラメータと関連があります。属性の設定方法については、Antの説明だけではなくコマンドそのものの解説を確認することをお勧めします。

Profile

WINGSプロジェクト

青木淳夫


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。