PreSetDef

説明

事前設定の定義は、いくつかの属性や要素の事前設定の定義と共に、 現在の定義を基にして、新しい定義を生成します。

Ant 1.6から

事前設定の定義がされたとき、 なんらかの属性やネストしたテキストの定義が使われるかそうでないか、 プロパティの解決は定義されます。

パラメータ

属性 説明 必須
name 新しい定義の名前 Yes
uri この定義が存在すべきuri No

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

属性か要素集合をもつ別の型

<presetdef>タスクは、パラメータとして1つのネストした要素を要します。 このネストした要素は、他のどのタイプまたはタスクであることができます。 事前設定される必要のある属性と要素は、ここに配置されます。

以下に、debug,deprecation,srcdir,destdir属性を持った、javacタスクの定義の一部を示します。 生成されたディレクトリからソースファイルへ、同様にsrc属性を持っています。
<presetdef name="my.javac">
   <javac debug="${debug}" deprecation="${deprecation}"
          srcdir="${src.dir}" destdir="${classes.dir}">
      <src path="${gen.dir}"/>
   </javac>
</presetdef>
普通のjavacタスクとして使うことができます。- 例:
<my.javac/>
事前設定タスク内で属性が示すのは、オーバライドに見えるかもしれません。 外部属性のように見えるかもしれません。- 例:
<my.javac srcdir="${test.src}" deprecation="no"/>
antlibでpresetdef定義を書くかもしれません。 例えば、以下のように、jarファイルantgoodies.jarにantlib.xmlがあれば:
<antlib>
   <taskdef resource="com/acme/antgoodies/tasks.properties"/>
   <!-- Implement the common use of the javac command -->
   <presetdef name="javac">
      <javac deprecation="${deprecation}" debug="${debug}"
             srcdir="src" destdir="classes"/>
   </presetdef>
</antlib>
以下のように、ビルドファイル内で使うかもしれません:
<project default="example" xmlns:antgoodies="antlib:com.acme.antgoodies">
   <target name="example">
      <!-- Compile source -->
      <antgoodies:javac srcdir="src/main"/>
      <!-- Compile test code -->
      <antgoodies:javac srcdir="src/test"/>
   </target>
</project>

下記は、定義が使われるときの、プロパティの評価の例です。

<target name="defineandcall">
   <presetdef name="showmessage">
      <echo>message is '${message}'</echo>
   </presetdef>
   <showmessage/>
   <property name="message" value="Message 1"/>
   <showmessage/>
   <antcall target="called">
      <param name="message" value="Message 2"/>
   </antcall>
</target>
<target name="called">
   <showmessage/>
</target>

Antコマンドは、出力結果を定義して呼び出します。

defineandcall:
[showmessage] message is '${message}'
[showmessage] message is 'Message 1'

called:
[showmessage] message is 'Message 2'

Copyright © 2003-2004 The Apache Software Foundation. All rights Reserved.

[訳注:これは横田聡が翻訳しました。日本語訳に対するコメントがあれば report@jajakarta.orgに送ってください]