copyタスク

広告

ここではビルドの途中でファイルをコピーする方法について見ていきます。「copy」タスクを使います。

基本となるのは下記の属性です。

属性説明必須
fileコピーするファイル必須
tofileコピー先となるファイルtofileかtodirのどちらかが必須
todirコピー先のディレクトリtofileかtodirのどちらかが必須
overwriteコピー先のファイルが新しくても既存のファイルを上書きします×

コピー元のファイルを「file」属性で、コピー先のファイルかディレクトリを「tofile」属性か「todir」属性で指定します。また、デフォルトでは、コピー元ファイルがコピー先ファイルよりも新しいか、 コピー先ファイルが無い場合にのみ、ファイルがコピーされます。

例えば下記のように記述します。

<copy file="./class/test.class" todir="./to"/>

では実際に試してみましょう。今回の構成は下記のようになっています。

-sample5     build.xml
  |
  +--src     test.java
  |
  +--class   test.class
  |
  +--to

コンパイル後に「to」ディレクトリにクラスファイルをコピーさせてみます。

コンパイルするプログラムファイルは下記です。

test.java

public class test{
  public static void main(String args[]){
    System.out.println("Antの実験です");
  }
}

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

build1.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" todir="./to" />
  </target>

</project>

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

AntでのCopyタスク

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

前に記述したように「copy」タスクはコピーするファイルがコピー先に存在しないか、又は存在しても新しくなければ実行されません。先ほどの状態のままもう一度antを実行しても何も処理は行われません。

AntでのCopyタスク

( Written by Tatsuo Ikura )