Mapping File Names

マッピングファイル名

Some tasks take source files and create target files. Depending on the task, it may be quite obvious which name a target file will have (using javac, you know there will be .class files for your .java files) - in other cases you may want to specify the target files, either to help Ant or to get an extra bit of functionality.

いくつかのタスクはソースファイルを使ってターゲットファイルを作成します。タスクに依りますが、ターゲットファイルがどの名前になるのかは一目瞭然かもしれませんが (javacでは、ご存知のとおり.javaファイルに対して.classファイルが生成されます) - しかし、他の場合にAntの手助けをしたりとかちょっとした特別の機能を使いたいとかという理由で ターゲットファイルを指定したいかも知れません。

While source files are usually specified as filesets, you don't specify target files directly - instead, you tell Ant how to find the target file(s) for one source file. An instance of org.apache.tools.ant.util.FileNameMapper is responsible for this. It constructs target file names based on rules that can be parameterized with from and to attributes - the exact meaning of which is implementation-dependent.

ソースファイルは通常filesetとして指定しますが、ターゲットファイルを直接指定することはありません。その代わりに1つのソースファイルに対して(複数の)ターゲット ファイルを見つける方法をAntに伝えることができます。この役割はorg.apache.tools.ant.util.FileNameMapperが担います。 それはfromto属性でパラメータ化されたルールをもとにしてターゲットファイルを作り上げます - つまり、このことの正確な意味は実装依存ということです。

These instances are defined in <mapper> elements with the following attributes:

これらのインスタンスは次の属性を持つ<mapper>要素です:

Attribute Description Required
type specifies one of the built-in implementations. Exactly one of both
classname specifies the implementation by class name.
classpath the classpath to use when looking up classname. No
classpathref the classpath to use, given as reference to a path defined elsewhere. No
from the from attribute for the given implementation. Depends on implementation.
to the to attribute for the given implementation. Depends on implementation.
属性 説明 必須
type 組み込み実装の1つを指定する 2つのうちどれか1つ
classname 実装をクラス名で指定する
classpath classnameを探すときに使用するクラスパス. No
classpathref 使用されるクラスパスであり,どこかで定義されたパスへの参照 として与えられます. No
from 選択した実装のfrom属性. 実装依存.
to 選択した実装のto属性. 実装依存.

Note that Ant will not automatically convert / or \ characters in the to and from attributes to the correct directory separator of your current platform. If you need to specify this separator, use ${file.separator} instead.

Antはtofrom属性中の \ や / 文字を現在のプラットフォームの正しいディレクトリセパレータに自動的に変換しません、。 このセパレータを指定する必要があるなら、代わりに${file.separator}を使用してください。

Parameters specified as nested elements

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

The classpath can be specified via a nested <classpath>, as well - that is, a path-like structure.

クラスパスはネストした<classpath>要素として指定できます。 つまり、パス類似構造と同じです。

The built-in mapper types are:

組み込みmapperタイプは:

identity

The target file name is identical to the source file name. Both to and from will be ignored.

ターゲットファイル名はソースファイル名と同一です。tofrom属性は無視されます。

Examples:

例:

<mapper type="identity"/>
Source file name Target file name
A.java A.java
foo/bar/B.java foo/bar/B.java
C.properties C.properties
Classes/dir/dir2/A.properties Classes/dir/dir2/A.properties
ソースファイル名 ターゲットファイル名
A.java A.java
foo/bar/B.java foo/bar/B.java
C.properties C.properties
Classes/dir/dir2/A.properties Classes/dir/dir2/A.properties

flatten

The target file name is identical to the source file name, with all leading directory information stripped off. Both to and from will be ignored.

ターゲットファイル名は先行するディレクトリ情報を取り除いた形でソースファイル名と同一です。 tofrom属性は無視されます。

Examples:

例:

<mapper type="flatten"/>
Source file name Target file name
A.java A.java
foo/bar/B.java B.java
C.properties C.properties
Classes/dir/dir2/A.properties A.properties
ソースファイル名 ターゲットファイル名
A.java A.java
foo/bar/B.java B.java
C.properties C.properties
Classes/dir/dir2/A.properties A.properties

merge

The target file name will always be the same, as defined by to - from will be ignored.

ターゲットファイル名はto属性で定義された名前で常に同じになります。 from属性は無視されます。

Examples:

例:

<mapper type="merge" to="archive.tar"/>

Source file name Target file name
A.java archive.tar
foo/bar/B.java archive.tar
C.properties archive.tar
Classes/dir/dir2/A.properties archive.tar
ソースファイル名 ターゲットファイル名
A.java archive.tar
foo/bar/B.java archive.tar
C.properties archive.tar
Classes/dir/dir2/A.properties archive.tar

glob

Both to and from define patterns that may contain at most one *. For each source file that matches the from pattern, a target file name will be constructed from the to pattern by substituting the * in the to pattern with the text that matches the * in the from pattern. Source file names that don't match the from pattern will be ignored.

tofrom属性両方はせいぜい1つの * を含むパターンを定めます。 from属性のパターンに一致するそれぞれのソースファイルに対して、1つのターゲットファイル名は to属性のパターン中の *from属性のパターン中の *に一致した文字列に置き換えることによって to属性のパターンから構築されます、 from属性のパターンに一致しないソースファイル名は無視されます。

Examples:

例:

<mapper type="glob" from="*.java" to="*.java.bak"/>
Source file name Target file name
A.java A.java.bak
foo/bar/B.java foo/bar/B.java.bak
C.properties ignored
Classes/dir/dir2/A.properties ignored
ソースファイル名 ターゲットファイル名
A.java A.java.bak
foo/bar/B.java foo/bar/B.java.bak
C.properties ignored
Classes/dir/dir2/A.properties ignored
<mapper type="glob" from="C*ies" to="Q*y"/>

Source file name Target file name
A.java ignored
foo/bar/B.java ignored
C.properties Q.property
Classes/dir/dir2/A.properties Qlasses/dir/dir2/A.property
ソースファイル名 ターゲットファイル名
A.java ignored
foo/bar/B.java ignored
C.properties Q.property
Classes/dir/dir2/A.properties Qlasses/dir/dir2/A.property

regexp

Both to and from define regular expressions. If the source file name matches the from pattern, the target file name will be constructed from the to pattern, using \0 to \9 as back-references for the full match (\0) or the matches of the subexpressions in parentheses. Source files not matching the from pattern will be ignored.

tofrom属性両方は正規表現を定めます。ソースファイル名がfrom属性のパターンに一致した場合、ターゲットファイル名はto属性のパターンから構築されます。 その際\0から\9を全一致(\0)や()で囲まれた部分式に対する一致を表す後方参照として使用します。 from属性のパターンに一致しないソースファイルは無視されます。

Note that you need to escape a dollar-sign ($) with another dollar-sign in Ant.

Antの中ではドル記号($)はもう1つドル記号を使ってエスケープする必要があることに注意してください。

The regexp mapper needs a supporting library and an implementation of org.apache.tools.ant.util.regexp.RegexpMatcher that hides the specifics of the library. Ant comes with implementations for the java.util.regex package of JDK 1.4, jakarta-regexp and jakarta-ORO. If you compile from sources and plan to use one of them, make sure the libraries are in your CLASSPATH. For information about using gnu.regexp or gnu.rex with Ant, see this article.

regrep mapperにはサポートライブラリとorg.apache.tools.ant.util.regexp.RegexpMatcherの実装が必要です。 AntにはJDK 1.4のjava.util.regex パッケージjakarta-regexpおよび jakarta-OROの実装が付いてきます。 ソースからコンパイルしてそれらのうちのどれかを使うつもりなら、 そのライブラリがCLASSPATHの中に含まれているか確認してください。 gnu.regexpgnu.rexをAntと一緒に使用するための情報として この記事を参照してください。

This means, you need optional.jar from the Ant release you are using and one of the supported regular expression libraries. Make sure, both will be loaded from the same classpath, that is either put them into your CLASSPATH, ANT_HOME/lib directory or a nested <classpath> element of the mapper - you cannot have optional.jar in ANT_HOME/lib and the library in a nested <classpath>.

これが意味するところは、使用しているAntリリースの optional.jar サポートされている正規表現ライブラリの1つを必要とするということです。両方が同じクラスパスから ロードされることを確認してください。つまりCLASSPATHANT_HOME/libディレクトリまたはそのマッパーのネストした<classpath>要素のいずれかにそれらを配置してください。 optional.jarANT_HOME/libに配置し正規表現ライブラリをネストした<classpath>要素にすることはできません。

Ant will choose the regular-expression library based on the following algorithm:

Antは次のアルゴリズムをもとに正規表現ライブラリを選びます:

Examples:

例:

<mapper type="regexp" from="^(.*)\.java$$" to="\1.java.bak"/>
Source file name Target file name
A.java A.java.bak
foo/bar/B.java foo/bar/B.java.bak
C.properties ignored
Classes/dir/dir2/A.properties ignored
ソースファイル名 ターゲットファイル名
A.java A.java.bak
foo/bar/B.java foo/bar/B.java.bak
C.properties ignored
Classes/dir/dir2/A.properties ignored
<mapper type="regexp" from="^(.*)/([^/]+)/([^/]*)$$" to="\1/\2/\2-\3"/>

Source file name Target file name
A.java ignored
foo/bar/B.java foo/bar/bar-B.java
C.properties ignored
Classes/dir/dir2/A.properties Classes/dir/dir2/dir2-A.properties
ソースファイル名 ターゲットファイル名
A.java ignored
foo/bar/B.java foo/bar/bar-B.java
C.properties ignored
Classes/dir/dir2/A.properties Classes/dir/dir2/dir2-A.properties
<mapper type="regexp" from="^(.*)\.(.*)$$" to="\2.\1"/>
Source file name Target file name
A.java java.A
foo/bar/B.java java.foo/bar/B
C.properties properties.C
Classes/dir/dir2/A.properties properties.Classes/dir/dir2/A
ソースファイル名 ターゲットファイル名
A.java java.A
foo/bar/B.java java.foo/bar/B
C.properties properties.C
Classes/dir/dir2/A.properties properties.Classes/dir/dir2/A

package

Sharing the same syntax as the glob mapper, the package mapper replaces directory separators found in the matched source pattern with dots in the target pattern placeholder. This mapper is particularly useful in combination with <uptodate> and <junit> output.

glob mapperと同じシンタックスを共有し、 package mapperは一致したソースパターンに見つかったディレクトリセパレータをターゲットパターンでドットに置き換えます。 このマッパーは<uptodate><junit>の出力と一緒に組み合わせると特に有用です。

Example:

例:

<mapper type="package"
        from="*Test.java" to="TEST-*Test.xml"/>

Source file name Target file name
org/apache/tools/ant/util/PackageMapperTest.java TEST-org.apache.tools.ant.util.PackageMapperTest.xml
org/apache/tools/ant/util/Helper.java ignored
ソースファイル名 ターゲットファイル名
org/apache/tools/ant/util/PackageMapperTest.java TEST-org.apache.tools.ant.util.PackageMapperTest.xml
org/apache/tools/ant/util/Helper.java ignored

Copyright © 2000-2001 Apache Software Foundation. All rights Reserved.

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