タッチ

説明

リソースの最終更新日時を変更し、同時に作成する可能性があります。このタスクは単一ファイルで動作するだけでなく、リソースおよびリソースコレクション(ディレクトリも含まれる)でも動作できます。Apache Ant 1.7 より前は FileSet または Filelist(Ant 1.6 より)のみがサポートされていました。

Ant は、最終更新日時を設定するために java.io.File の API を使用しますが、これはいくつかの制限があります。たとえば、タイムスタンプの粒度はオペレーティングシステムによって異なり、オペレーティングシステムによってはミリ秒未満の粒度が許可される場合があります。より詳細な制御が必要な場合は、exec タスクとネイティブコマンドを使用する必要があります。

Ant 1.8.2 以降では、ファイルの最終更新日時を変更できなかった場合は警告メッセージが記録されます。たとえば、Unix システムの多くでは、所有していないファイルの最終更新日時を変更しようとすると、これが発生します。

パラメーター

属性 説明 必須
ファイル ファイルの名前。 ネストされたリソースコレクション要素が指定されていない場合
ミリ秒 1970 年 1 月 1 日の午前 0 時からのミリ秒単位のファイルの新しい最終更新日時を指定します。 いいえ。datetime が優先されますが、両方が省略されている場合は現在の時刻が使用されます。
datetime ファイルの新しい最終更新日時を指定します。Ant 1.8 以降、特殊値 now は現在の時刻を表します。
パターン 現在のロケールを使用する SimpleDateFormat と互換性のあるパターン文字列。Ant 1.6.3 以降 いいえ。US ロケールを使用して MM/dd/YYYY hh:mm a または MM/dd/yyyy hh:mm:ss a が既定値です。
mkdirs 新しいファイルをタッチするときに存在しない親ディレクトリを作成するかどうか。Ant 1.6.3 以降 いいえ。既定値は false です。
verbose 新しいファイルの作成をログに記録するかどうか。Ant 1.6.3 以降 いいえ。既定値は true です。

ネストされた要素として指定されたパラメーター

リソースコレクション

ネストされたリソースコレクション要素を任意の数だけ使用して、このタスクのリソースを定義し、他の場所で定義されたリソースを参照できます。 **注:** このタスクに渡されるリソースは org.apache.tools.ant.types.resources.Touchable インターフェイスを実装する必要があります。これは、パス、ファイルセット、またはファイルリストによって返されるファイルシステムベースのリソースすべてに当てはまります。

下位互換性のため、ネストされたファイルセットによって一致するディレクトリも「タッチ」されます。これを抑制するには type セレクターを使用します。これは、タスクに直接ネストされたファイルセットにのみ適用され、パスまたは他のリソースコレクションにネストされたファイルセットには適用されません。

マッパー

Ant 1.6.3 以降、ネストされた マッパー を指定できます。ネストされた file set、file list、またはファイル属性を介して指定されたファイルは、指定されたマッパーを使用してマップされます。マップされたファイルごとに、結果ファイルがタッチされます。時間が指定されておらず、元のファイルが存在する場合は、そのタイムスタンプが使用されます。時間が指定されておらず、元のファイルが存在しない場合は、現在時刻が使用されます。Ant 1.8 以降、タスク設定(millis と datetime)は元のファイルのタイムスタンプよりも優先されます。

存在しない場合に myfile を作成し、最終更新日時を現在の時刻に変更します。

<touch file="myfile"/>

存在しない場合に myfile を作成し、最終更新日時を 2000 年 6 月 28 日午後 2:02(24 時間表記を使用している場合は 14:02)に変更します。

<touch file="myfile" datetime="06/28/2000 2:02 pm"/>

src_dir にあるすべてのファイルとディレクトリの最終更新日時を 1974 年 10 月 09 日午後 4:30 に変更します。

<touch datetime="09/10/1974 4:30 pm">
    <fileset dir="src_dir"/>
</touch>

myfile が存在していなければ作成し、ファイルシステムが 1 秒の精度を許容する場合、修正時刻を 2000 年 6 月 28 日 午後 2:02:17 (24 時間表示を使用している場合は 14:02:17) に変更します。そうでない場合は、それに近い時刻に変更します。

<touch file="myfile" datetime="06/28/2000 2:02:17 pm"/>

bar が存在していなければ作成し、修正時刻を foo のものに 変更します。

<touch file="foo">
    <mapper type="glob" from="foo" to="bar"/>
</touch>

src ディレクトリにあるすべての .java ファイルに対して、shadow ディレクトリにファイルが存在していなければ作成し、そのファイルの修正時刻を現在時刻に変更します。

<touch file="foo" datetime="now">
    <mapper type="regexp" from="^src(.*)\.java" to="shadow\1.empty"/>
</touch>