Antで複雑な処理を行う場合、既存のタスクだけでは機能が不十分なことがあります。そのような場合、それらの処理をJavaクラスのmainメソッドとして実装し、Javaタスクでmainメソッドを呼ぶことで処理を行う方法があります。しかし、この方法の場合、以下のような問題が生じます。
これらの問題を解決する方法の1つとして、Javaクラスで不足する機能をAntのタスクとして実装し、そのタスクをtaskdefタスクを使用してAntから使用できるようにするという方法が挙げられます。この方法には、以下のようなメリットがあります。
本稿では、新規にAntで使用するタスクを作成する際の基本的な方法として、標準出力に「Hello Anttask」と表示するだけのタスクの作成方法と使用方法を紹介します。パラメータやネストした要素を取るようなタスクを作成する方法については、今後のTipsで紹介していきます。
Antで使用するタスクを新規に生成するには、org.apache.tools.ant.Taskを継承したクラスを作成し、executeメソッド内にタスクとしての処理を実装します。タスクの処理中にエラーが発生した場合は、BuildExceptionをスローします。以下に、新規タスクの実装例を示します。
import org.apache.tools.ant.BuildException; |
Antスクリプトから新規タスクを使用できるようにするには、まず新規タスクの実装クラスを含んだJARファイルを作成します。次に、Antスクリプト内のtaskdefタスクでそのJARファイル参照して、新規タスクを使用可能にします。taskdefタスクのname属性値には新規タスクのタスク名を、classname属性には新規タスクの処理を実装したクラスのクラス名を入れます。新規タスクのクラスを含むJARファイルがクラスパスに入るように、JARファイルへのパスをtaskdefタグのclasspath属性値、またはtaskdefタグにネストしたclasspathタグで指定しておきます。
sampletask.jar内にSampleTask.classが入っており、ディレクトリ構造が以下のようになっていると仮定します。
上記タスクを実行するビルドファイル「build.xml」の記述例を、以下に示します。
<?xml version="1.0" encoding="Shift_JIS"?> |
このビルドファイルの実行結果は以下のようになります。
Buildfile: D:\work\sampletask\build.xml |
Copyright © ITmedia, Inc. All Rights Reserved.