Typedef

説明

現在のプロジェクトに対し、 新しい型やタスクが使えるようにタスクやデータ型の定義を加えます。

タスクは、org.apache.tools.ant.Taskを継承するか、 アダプタクラスを用いて適したいくつかのクラスです。

データ型は、プロジェクトレベルで定義されたり、ID属性によって参照される、 pathsfilesetsのようなものです。 カスタムデータ型をうまく使うには、しばしばカスタムタスクを必要とします。

二つの属性、即ち、 データ型を他と重ならずに区別する名前と、 このデータ型を実装したクラスの(パッケージも含めた)フルネームが必要です。

ファイルやリソース属性を使って、 一度に幾つかのデータ型を定義することもできます。 これらの属性は、 Java プロパティファイルか、XMLフォーマット形式のファイルを示します。

プロパティファイルの各行は次のような形式で一つのデータ型を定義します:

    typename=fully.qualified.java.classname
  

XMLフォーマットは、 Antlibで記述されています。

パラメータ

属性 説明 必須
name データ型の名前 ファイルやリソースが指定されない限りは Yes
classname データ型を実装したフルクラス名 ファイルやリソースが指定されない限りは Yes
file 定義をロードするファイルの名前。 No
resource 定義をロードするリソースの名前。もし、複数のリソースがクラスパスにあり、 形式が"properties"ならば、最初のリソースが読まれます。 そうでないときは、すべてのリソースが読まれます。 No
format ファイルがリソースのフォーマット。 値は、"properties"か"xml"です。 "properties"ならば、ファイル/リソースは、クラスパス名のペアを含みます。 "xml"ならば、ファイル/リソースは、AntlibのXML構造に準じます。 ファイル/リソース名が".xml"で終わらなければ、デフォルトは、"properties"です。 終わっていれば、format属性の値は"xml"になります。(Ant 1.6 より導入) No
classpath classnameを探すときにクラスパスを使う。 No
loaderRef 指定されたクラスパスにより作られた、 そのクラスをロードするのに使われるローダーの名前。 これにより、 複数のタスク/データ型が同じローダーでロードできるようになります。 それにより、お互いに呼び出せるようになります。 (Ant 1.5 より導入) No
onerror 型を定義して失敗したとき動作です。 値が、failならば、原因となる例外を出します。 reportならば、警告を出力しますが、処理を継続します。 ignoreならば、何もしません。 デフォルトは、fail。 (Ant 1.6 より導入) No
adapter 既存クラスを別のインタフェース/クラスに適用するために使用されるクラス。 アダプタクラスは、"org.apache.tools.ant.TypeAdapter"インタフェースを実装しなければなりません。 アダプタクラスが属性"adaptto"によって、実装/継承することがない限り、 既存クラスをラップして使います。 "adaptto"が設定されなければ、既存クラスが常にラップされます。 (Ant 1.6 より導入) No
adaptto この属性は、adapter属性とともに使われます。 既存クラスがこの属性によって指定されたインタフェース/クラスを実装/継承しなければ、 アダプタクラスは、既存クラスをラップするために使用されます。 (Ant 1.6 より導入) No
uri この定義を置くべきuri since Ant1.6 No

ネストする要素として指定されるパラメータ

classpath

typedef タスクの classpath 属性は、 PATHに似た構造で、 classpath 要素をネストすることによっても設定することができます。

urlsetという定義型を以下に示します。
    <typedef name="urlset" classname="com.mydomain.URLSet"/> 
そのデータ型は、Antで利用可能です。 com.mydomain.URLSet クラスがこのデータ型を実装しています。

Taskを継承して、org.apache.tools.ant.TypeAdapterを実装した、 org.acme.ant.RunnableAdapterクラスと、 AntタスクとしてRunnableインタフェースを使い、 プロキシオブジェクト上で呼び出すrunメソッドを想定します。 runclockタスクを定義する断片を以下に示します。

    <typedef name="runclock"
             classname="com.acme.ant.RunClock"
             adapter="org.acme.ant.RunnableAdapter"/>
  

Copyright © 2001-2004 The Apache Software Foundation. All rights Reserved.
[訳注:これは漆島賢二の訳を参考に、横田聡が翻訳しました。日本語訳に対するコメントがあれば report@jajakarta.orgに送ってください]