- Home ›
- Apache Antの使い方 ›
- Copyタスク(コピー) ›
- HERE
ファイル名を変更してコピーする
「copy」を実行する場合、ファイル名を変更してコピーすることも出来ます。1つのファイルだけであれば「tofile」属性に別の名前を指定することで違う名前としてコピーする事が可能です。
<copy file="./class/test.class" tofile="./back/test.class.back"/>
では実際に試してみましょう。
-sample5 build.xml | +--src test.java | +--class test.class | +--back
コンパイル後に出来たクラスファイルを末尾に「.back」を付けた名前に変更して「back」ディレクトリにコピーします。
コンパイルするプログラムファイルは下記です。(中身は意味がないので省略します)。
ビルドファイルは下記です。
<?xml version="1.0" encoding="Shift_JIS"?> <project name="antsample" default="compile"> <target name="compile"> <javac srcdir="./src" destdir="./class" /> <copy file="./class/test.class" tofile="./back/test.class.back"/> </target> </project>
ではantを実行してみます。
ビルドを実行後、「back」ディレクトリの中身を確認すると「test.class.back」という名前でファイルがコピーされていることが確認できます。
複数のファイルを名前を変えてまとめてコピーする
1つのファイルだけではなく、例えばディレクトリに含まれるファイルを全てコピーする時に、コピーされるファイルをまとめて名前を変更する場合には<mapper>要素を使います。
例としてコピーされるクラスファイル全ての末尾に「.back」を付与してコピーする場合には下記のように記述します。
<copy todir="./back"> <fileset dir="./class" /> <mapper type="glob" from="*.class" to="*.class.bak"/> </copy>
「from」属性に変更前のファイルを表すパターンファイルを指定し、「to」属性に変更後のファイル名をパターンファイルを指定します。「glob」属性は「from」属性及び「to」属性に多くとも1つの * を含むパターンを定義する場合に指定します。(<mapper>要素の詳細は別途確認します)。
では実際に試してみましょう。
-sample5 build.xml | +--src test.java | sample1.java | sample2.java | +--class test.class | sample1.class | sample2.class | +--back
「src」ディレクトリに含まれる3つのソースファイルをコンパイルし「class」ディレクトリに格納します。そして「class」ディレクトリに含まれるクラスファイルを全て末尾に「.back」を付けた名前に変更して「back」ディレクトリにコピーします。
コンパイルするプログラムファイルは下記です。(中身は意味がないので省略します)。
ビルドファイルは下記です。
<?xml version="1.0" encoding="Shift_JIS"?> <project name="antsample" default="compile"> <target name="compile"> <javac srcdir="./src" destdir="./class" /> <copy todir="./back"> <fileset dir="./class" /> <mapper type="glob" from="*.class" to="*.class.bak"/> </copy> </target> </project>
ではantを実行してみます。
ビルドを実行後、「back」ディレクトリの中身を確認すると全てのファイルに「.back」が付いてファイルがコピーされていることが確認できます。
( Written by Tatsuo Ikura )