<fileset>による移動元ファイルの指定

広告

前のページのサンプルでは移動するファイルを「file」属性で指定していましたが、「file」属性の代わりに<fileset>要素を使って移動するファイルを指定することが出来ます。

<fileset>要素について詳しくは『<fileset>によるコピー元ファイルの指定』を参照して下さい。

<fileset>要素を使って移動するファイルを指定する場合には、移動先の指定に「todir」属性を使って下さい。例えば「class」ディレクトリに含まれる全てのファイルを移動する場合は下記のようになります。

<move todir="./to">
  <fileset dir="./class" />
</move>

全てのファイルではなく、特定のファイルを指定する場合には「includes」属性を使います。例えばクラスファイルだけを対象にする場合には下記のようになります。

<move todir="./to">
  <fileset dir="./class" includes="*.class" />
</move>

ファイルの集合から除外したいファイルを指定するには「excludes」属性を使います。例えばクラスファイルは対象から外す場合には下記のようになります。

<move todir="./to">
  <fileset dir="./class" includes="*.class" />
</move>

他にも<include>要素と<exclude>要素などを使っても指定可能です。詳しくは『<fileset>によるコピー元ファイルの指定』を参照して下さい。

では実際に試してみましょう。構成は下記の通りです。

-sample9     build.xml
  |
  +--src     test.java
  |          sample1.java
  |          sample2.java
  |
  +--class
  |
  +--to

3つのファイルをコンパイルして「class」ディレクトに格納後、「class」ディレクトリの中の「sample」が付いていないクラスファイルだけ(結果的にtest.classだけになる)を「to」ディレクトリに移動させてみます。

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

test.java

sample1.java

sample2.java

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

build2.xml

<?xml version="1.0" encoding="Shift_JIS"?>

<project name="antsample" default="compile">

  <target name="compile">
    <javac srcdir="./src" destdir="./class" />
    <move todir="./to">
      <fileset dir="./class"
               includes="*.class"
               excludes="sample*"
      />
    </move>
  </target>

</project>

ではantを実行してみます。

AntでのMoveタスク

コンパイル後にファイルが移動されているのが確認できます。

( Written by Tatsuo Ikura )