Antで使う新規タスクにパラメータを渡すJavaTips 〜Apache/Jakarta編

» 2004年09月07日 10時00分 公開
[BULL@IT]

 本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は必須のパラメータであるとします。

SampleTask2.java
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
build.xml
<?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.

RSSについて

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

メールマガジン登録

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