ファイル名を変更してコピーする

広告

「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」ディレクトリにコピーします。

コンパイルするプログラムファイルは下記です。(中身は意味がないので省略します)。

test.java

ビルドファイルは下記です。

build4.xml

<?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を実行してみます。

AntでのCopyタスクで別の名前でコピー

ビルドを実行後、「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」ディレクトリにコピーします。

コンパイルするプログラムファイルは下記です。(中身は意味がないので省略します)。

test.java

sample1.java

sample2.java

ビルドファイルは下記です。

build5.xml

<?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を実行してみます。

AntでのCopyタスクで別の名前でコピー

ビルドを実行後、「back」ディレクトリの中身を確認すると全てのファイルに「.back」が付いてファイルがコピーされていることが確認できます。

( Written by Tatsuo Ikura )