deleteタスク

広告

ここではファイルやディレクトリを削除する方法について見ていきます。「delete」タスクを使います。

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

属性説明必須
file削除するファイルです。単純なファイル名(ファイルが現在のベースディレクトリに存在する場合)、相対パスのファイル名、またはフルパスのファイル名、のいずれかを指定します。fileかdirのどちらかが必須
dir削除するディレクトリです。ディレクトリ内のファイルとサブディレクトリをすべて含みます。fileかdirのどちらかが必須
verbose削除された各ファイルの名前を表示します ("true"/"false" で指定します)。省略した場合のデフォルトは "false" です。×
includeEmptyDirsfileset を使用している場合、"true" にセットすると、空のディレクトリを削除します。デフォルトは "false" です。×
defaultexcludesデフォルト除外集合を使用するかどうか("yes"/"no")を示します。省略した場合、デフォルト除外集合が使用されます。×

削除するファイル又はディレクトリを「file」属性又は「dir」属性で指定します。ディレクトリを削除する場合、デフォルトでは空のディレクトリは削除されません。空のディレクトリを削除する場合には「includeEmptyDirs」属性を「true」に設定します。

「defaultexcludes」属性はデフォルト除外パターンを使うかどうかを指定します。デフォルトでは使うことになっています。デフォルト除外パターンというのは下記になります。

**/*~
**/#*#
**/.#*
**/%*%
**/._*
**/CVS
**/CVS/**
**/.cvsignore
**/SCCS
**/SCCS/**
**/vssver.scc
**/.svn
**/.svn/**
**/.DS_Store

このデフォルト除外パターンに該当するファイルは削除が行われないため注意して下さい。無効にしたい場合には「defaultexcludes」属性に「no」を指定して下さい。

実際の利用方法としては例えば下記のように記述します。

<delete file="./class/test.class"/>

この場合は特定のファイルを削除します。またディレクトリ(及びそのディレクトリに含まれる全てのファイルとサブディレクトリ)を削除する場合は下記のように記述します。

<delete dir="./class"/>

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

-sample8     build.xml
  |
  +--back    test.class.bak
             sample1.class.bak
             sample2.class.bak

まず「back」ディレクトリにある「test.class.bak」ファイルを削除してみます。その後で「back」ディレクトリを削除してみます。

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

build1.xml

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

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

  <target name="delete">
    <delete file="./back/test.class.bak"/>
  </target>

  <target name="deleteall">
    <delete dir="./back" verbose="true"/>
  </target>

</project>

まずは「delete」ターゲットを対象にantを実行してみます。

AntでのDeleteタスク

指定したファイルが削除されているのが確認できます。

次に「back」ディレクトリを削除してみます。

AntでのDeleteタスク

「back」ディレクトリが削除されていることが確認できます。また「deleteall」ターゲットの方では「delete」タスクの中で「verbose」要素を「true」に設定しているため、実際に削除されたファイルが画面に表示されています。

( Written by Tatsuo Ikura )