Antは、開発やリリース時の一連の処理を自動化できる、Javaベースのビルドツールです。コンパイルプロセスは、EclipseやJBuilderなどの統合開発環境の利用によっても簡略化することが可能です。しかし、warファイルのパッケージングやUnitテストなど、複雑な処理を行う際はAntを利用した方が効率的です。また、環境に依存しないJavaの利点を生かし、開発環境と異なる環境でも設定ファイル(build.xml)を変更せずに、簡単にコンパイルが行えます。
本稿では、豊富なAntの機能の中から、開発の基本となるコンパイルとアプリケーションの実行について説明します。
Antは、Apache Antプロジェクトの公式サイト(http://ant.apache.org)から入手できます。その時点での最新の安定版をダウンロードしてください。
設定など、Antの詳細については、「連載:現場に活かすJakarta Project」の「第2回 AntでJavaのビルドを簡単にする」を参照してください。また、Eclipse上からAntを実行すれば、複雑な設定が不要なうえ、コードアシスト機能も利用できて便利なので、設定ファイルの記述にはEclipseを使用することをお勧めします。EclipseからAntを利用する方法については、「連載:Eclipse徹底活用」の「第1回 Eclipseからビルドツール「Ant」を使う」を参照してください。
本稿では、下記のようなフォルダ構成の環境で、
└─project_root |
という一連の手順を、javacタスクとjavaタスクを使用して自動化する例を紹介します。
なお、srcフォルダ下にあるSample.javaは、「Hello World!」という文字列を出力するだけの単純なプログラムとします。また、libフォルダ内にあるhoge.jarとmoge.jarを参照しているものとします。
以下は、前述した手順をAntで実行する設定ファイルです。
<?xml version="1.0" encoding="Shift_JIS"?> |
設定ファイルには、コンパイルを行うcompileターゲットとプログラムの実行を行うexecuteターゲット、さらにその両方を実行するallターゲットが定義されています。ここでは、「ant all」を実行して、コンパイルとプログラム実行の両方が行われていることを確認します。
Buildfile: C:\java\eclipse30\workspace\Sample\build.xml |
注意:javacタスクは、不要なコンパイルを行わないようファイルのタイムスタンプを判定します。そのため、ソースとなるSample.javaがSample.classより古いファイルの場合、コンパイルは行われません。
本稿では、compileターゲットにjavacタスクを用いてコンパイルを行います。
属性名称 | 説明 | 必須 | |
---|---|---|---|
srcdir | javaのソースファイルがあるフォルダを指定 | Yes | |
destdir | クラスファイルを出力するフォルダを指定 | No | |
classpath | クラスパスを指定 | No | |
debug | デバッグ情報を付けるかどうかを指定(デフォルトoff) | No | |
本稿では、executeターゲットにjavaタスクを用いてプログラムを実行します。
属性名称 | 説明 | 必須 | |
---|---|---|---|
classname | 実行するJavaのクラス名 | Yes | |
jar | 実行するjarファイル名 | No | |
classpath | クラスパスを指定 | No | |
classpathref | 定義済みのクラスパスのIDを指定 | No | |
fork | 別のVMで実行 | No | |
javaタスクは、特定のクラスファイルに対して動作するため、classnameかjarのいずれか1つの属性設定が必須です。なお、Javaクラスに引数を指定するにはargタグを利用し、VMに引数を渡すにはjvmargタグを利用します。
echoタスクを使用すると、指定したメッセージを出力できます。
属性名称 | 説明 | 必須 | |
---|---|---|---|
message | 出力するメッセージ | Yes | |
file | 出力するファイル名(指定しない場合は標準出力に表示) | No | |
javacタスクとjavaタスクの属性は、基本的にjavacコマンドとjavaコマンドのパラメータと関連があります。属性の設定方法については、Antの説明だけではなくコマンドそのものの解説を確認することをお勧めします。
Copyright © ITmedia, Inc. All Rights Reserved.