本Tipsは、javaのクラスとして実装したAntの新規タスクにパラメータを渡す方法を説明します。Antで使用するタスクを作成する方法の基本については、「Antで使う新規タスクを作成する」を参照してください。
新規タスクの実装クラスにパラメータを渡す
Antでは、タスクに渡すパラメータをビルドファイル中のタスク要素の属性として指定します。属性名にパラメータとしての名前を、属性値にパラメータとして渡す値を記述します。
新規に作成するタスクでXxxというパラメータ(Xxxは任意の英数字かアンダーライン)を使用可能にするには、タスクとして使用するクラスにsetXxxメソッドを実装します。Antでは属性名の大文字小文字は同一視されるため、setXxxメソッドのXxx部分については大文字小文字どちらを使用しても構いません。このメソッドは一つの引数と、voidの戻り値を持ちます。ビルドスクリプト内で、新規タスクを呼ぶXML要素に属性Xxxが指定されていると、Antは属性値を引数に合った型に変換し、変換後の値を引数として、当該タスクに対応するクラスのsetXxxメソッドを呼びます。全ての属性について前記処理が行われた後、execute()メソッドが呼ばれ、タスクが実際に実行されます。setXxxメソッドの引数として使用可能な型としては幾つかありますが、その中の主要なものについて以下に示します。
引数の型 | 属性値と引数の関係 | |
---|---|---|
String | 属性値がそのまま文字列として渡される | |
boolean | 属性値が「true」「yes」「on」(大文字小文字同一視)の時はtrue、それ以外の時はfalseが渡される | |
int、long、short、byte | 属性値が数値として渡される。数値に変換できないときはエラーになる |
パラメータを取る新規タスクを作成する
ここでは、message、enable、numberというパラメータを取り、それらの内容を表示するタスクを作成します。messageは文字列で、enableはbooleanで、nunmberは数値として受け取るものとします。また、messageは必須のパラメータであるとします。
import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; public class SampleTask2 extends Task { private String message = null; // message属性のデフォルト値 private boolean enable = false; // enable属性のデフォルト値 private int number = 0; // number属性のデフォルト値 // message属性値をセット public void setMessage(String msg) { this.message = msg; } // enable属性値をセット public void setEnable(boolean b) { this.enable = b; } // number属性値をセット public void setNumber(int i) { this.number = i; } // タスクの実行処理 public void execute() throws BuildException { // 必須パラメータmessageが未指定の場合はエラーにする if (message == null) { throw new BuildException("message must be specified"); } // パラメータの内容表示 System.out.println("message: " + message); System.out.println("enable: " + enable); System.out.println("number: " + number); } }
パラメータを取る新規タスクを実行する
sampletask2.jar内にSampleTask2.classが入っており、ディレクトリ構造が以下のようになっている場合に、上記タスクを実行するビルドファイルbuild.xmlの記述例と、このビルドファイルの実行結果を以下に示します。
D:\work\sampletask2\build.xml D:\work\sampletask2\sampletask2.jar
<?xml version="1.0"?> <project name="taskdef_sample2" default="execute_sample2"> <taskdef name="sampletask2" classname="SampleTask2" classpath="./sampletask2.jar"/> <target name="execute_sample2"> <!-- 新規タスクを三回呼ぶ --> <sampletask2 message="Hello"/> <!-- enable、numberはデフォルト値のまま --> <sampletask2 message="GoodBye" enable="true" number="1"/> <sampletask2/> <!-- 必須パラメータが無いのでエラーが発生する --> </target> </project>
Buildfile: build.xml execute_sample2: [sampletask2] message: Hello [sampletask2] enable: false [sampletask2] number: 0 [sampletask2] message: GoodBye [sampletask2] enable: true [sampletask2] number: 1 BUILD FAILED D:\work\sampletask2\build.xml:8: message must be specified Total time: 0 seconds
Copyright © ITmedia, Inc. All Rights Reserved.