MacroDef

Description

説明

This defines a new task using a <sequential> nested task as a template. Nested elements <attribute> and <element> are used to specify attributes and elements of the new task. These get substituted into the <sequential> task when the new task is run.

<sequential>内部タスクをひな形とする、新しいタスクを定義します。 内部要素 <attribute>と<element>が、その新しいタスクの属性および要素を指定するのに使用されます。 新しいタスクが実行されるとき、これらは <sequential> タスク内で置き換えられます。

since Ant 1.6

Ant 1.6〜

Parameters

Attribute Description Required
name The name of the new definition Yes
uri The uri that this definition should live in. No
属性 説明 必須
name 新しく定義する名前 Yes
uri The uri that this definition should live in. No

Parameters specified as nested elements

内部要素として指定するパラメータ

attribute

This is used to specify attributes of the new task. The values of the attributes get substituted into the templated task. The attributes will be required attributes unless a default value has been set.

新しいタスクの属性を指定します。属性の値はテンプレートタスク内で置き換えられます。 デフォルト値が設定されていない場合、この属性は必須になります。

This attribute is placed in the body of the templated task using a notation similar to the ant property notation - @{attribute name}. (May be remembered as "put the substitution AT this location"). The escape sequence @@{x} is used to allow @{x} to be placed in the text without substitution of x. This corresponds to the $${x} escape sequence for properties.

属性はテンプレートタスクの本体内で、antのプロパティ記法 ―― @{属性名} ―― で書かれた部分に置き換えられます(置き換え AT ココ、と覚えましょう)。

The case of the attribute is ignored, so @{myAttribute} is treated the same as @{MyAttribute}.

attributeでは大文字/小文字は同一視されます。つまり、@{myAttribute} と @{MyAttribute} は同じです。

Parameters

パラメータ
Attribute Description Required
name The name of the new attribute Yes
default The default value of the attribute. No
description This contains a description of the attribute. since ant 1.6.1 No
属性 説明 必須
name 新しい属性の名前 Yes
default その属性のデフォルト値。 No
description その属性の説明。 ant 1.6.1 〜 No

element

This is used to specify nested elements of the new task. The contents of the nested elements of the task instance are placed in the templated task at the tag name.

新しいタスクの内部要素を指定します。テンプレートタスクのそのタグ名のところが、タスクインスタンスの内部要素の内容で置き換えられます。

The case of the element name is ignored.

要素名の大文字/小文字は同一視されます。

Parameters

パラメータ
Attribute Description Required
name The name of the new attribute Yes
optional If true this nested element is optional. Default is false - i.e the nested element is required in the new task. No
description This contains a description informing the user what the contents of the element are expected to be. since ant 1.6.1 No
属性 説明 必須
name 新しい属性の名前 [訳注: 新しい内部要素の名前、の誤りと考えられる] Yes
optional trueのとき、この内部要素は必須でないことを表します。デフォルト値は false ―― 内部要素は新しいタスクで必須とされます。 No
description 内部要素として何を期待するか、ユーザに示すための説明を記述します。 ant 1.6.1〜 No

text

This is used to specify the treatment of text contents of the macrodef. If this element is not present, then any nested text in the macro will be an error. If the text element is present, then the name becomes an attribute that gets set to the nested text of the macro. Since ant 1.6.1.

macrodefのテキスト内部要素を指定します。 この要素を指定しない場合、マクロにある内部テキストはすべてエラーになります。 テキスト要素を指定した場合、マクロの内部テキストは、指定した名前の属性として扱われます。 ant 1.6.1〜

The case of the text name is ignored.

大文字/小文字は同一視されます。

Parameters

パラメータ
Attribute Description Required
name The name of the text attribute Yes
optional If true nested text in the macro is optional, default is "false". No
trim If true, the nested text is trimmed of white space, default is "false". No
description This contains a description informing the user what the nested text of the macro is expected to be. No
属性 説明 必須
name 内部テキストに付与する属性名 Yes
optional trueの場合、内部テキストは必須でないことを表します。デフォルト値は falseです。 No
trim trueの場合、内部テキストの両端の空白は削られます。デフォルト値は false です。 No
description 内部テキストとして何を期待するか、ユーザに示す説明を記述します。 No

Examples

The following example defined a task called testing and runs it.

testing というタスクを定義して実行する例です。

<macrodef name="testing">
   <attribute name="v" default="NOT SET"/>
   <element name="some-tasks" optional="yes"/>
   <sequential>
      <echo>v is @{v}</echo>
      <some-tasks/>
   </sequential>
</macrodef>

<testing v="This is v">
   <some-tasks>
      <echo>this is a test</echo>
   </some-tasks>
</testing>

The following fragment defines a task called <call-cc> which take the attributes "target", "link" and "target.dir" and the nested element "cc-elements". The body of the task uses the <cc> task from the ant-contrib project.

"target","link","target.dir" という属性および "cc-elements" という内部要素を必要とする、<call-cc>というタスクを定義します。このタスクは、 ant-contribの <cc>タスクを使用しています。

<macrodef name="call-cc">
   <attribute name="target"/>
   <attribute name="link"/>
   <attribute name="target.dir"/>
   <element name="cc-elements"/>
   <sequential>
      <mkdir dir="${obj.dir}/@{target}"/>
      <mkdir dir="@{target.dir}"/>
         <cc link="@{link}" objdir="${obj.dir}/@{target}"
             outfile="@{target.dir}/@{target}">
            <compiler refid="compiler.options"/>
            <cc-elements/>
         </cc>
      </sequential>
</macrodef>

This then can be used as follows:

次のように使用します:

<call-cc target="unittests" link="executable"
         target.dir="${build.bin.dir}">
   <cc-elements>
      <includepath location="${gen.dir}"/>
      <includepath location="test"/>
      <fileset dir="test/unittest" includes = "**/*.cpp"/>
      <fileset dir="${gen.dir}" includes = "*.cpp"/>
      <linker refid="linker-libs"/>
   </cc-elements>
</call-cc>

The following shows the use of the text element.

以下の例では、text要素の使い方を示しています。

<macrodef name="echotest">
   <text name="text"/text>
   <sequential>
      <echo>@{text}</echo>
   </sequential>
</macrodef>
<echotest>
   Hello world
</echotest>

Copyright © 2003-2004 The Apache Software Foundation. All rights Reserved.
[訳注:これは的場聡弘が翻訳しました。日本語訳に対するコメントがあれば report@jajakarta.orgに送ってください]