Uptodate

説明

ターゲットのファイルやファイル集合が、 ソースファイルのファイルやファイル集合よりも最新のものである場合、 プロパティを設定します。 一つのソースファイルは、 srcfile属性を用いて指定されます。 ソースファイルの集合は、 ネストされた<srcfiles>要素を用いて指定されます。 ネストされた <mapper> 要素を用いて複数のターゲットファイルが指定されるので、 複数のファイルセットがあります。

デフォルトでは、ターゲットファイルのタイムスタンプが、 ソースファイルのタイムスタンプよりも新しい場合、 プロパティの値にtrueが設定されます。 value属性を指定することにより、 デフォルトと違う何かを値に指定することができます。

<mapper>要素が指定されずに、 <srcfiles> 要素が使われた場合、 デフォルトの振舞いでは、 targetfile属性の値を持つ to属性が設定された merge mapper を使用します。

一般的には、このタスクは 指定されたファイルの相対的な時刻に依存して、 ターゲットの実行を避けるのに便利なプロパティを設定するのに使われます。

パラメータ

属性 説明 必須
property 設定するプロパティ名 Yes
value プロパティに設定する値 No; デフォルトはtrue.
srcfile ターゲットファイルに対し比較するファイル ネストされた<srcfiles> 要素が存在しない限り Yes
targetfile 状態を判定したいファイル ネストされた<mapper> 要素が存在しない限り Yes

ネストされる要素により指定されるパラメータ

srcfiles

ネストされた <srcfiles> 要素により、 ターゲットファイルに対し判定するためのファイル集合を指定できます。

注意: srcfile属性、あるいは、 ネストされた<srcfiles> 要素が指定できますが、両方は指定できません。

mapper

ネストされた<mapper>要素により、 ソースファイルの集合と比較して、 最新であるかチェックするターゲットファイルの集合を指定できます。

マッパの"to"属性は、ターゲットファイルか、ネストしたソースファイル要素の"dir"属性に関係しています。

  <uptodate property="xmlBuild.notRequired" targetfile="${deploy}\xmlClasses.jar" >
    <srcfiles dir= "${src}/xml" includes="**/*.dtd"/>
  </uptodate>

${deploy}/xmlClasses.jar${src}/xmlディレクトリにある全てのDTDファイルよりも最新である場合、 xmlBuild.notRequiredtrue に設定します。

これは、同様に次のようにも書くことができます:

  <uptodate property="xmlBuild.notRequired">
    <srcfiles dir= "${src}/xml" includes="**/*.dtd"/>
    <mapper type="merge" to="${deploy}\xmlClasses.jar"/>
  </uptodate>

そして、 xmlBuild.notRequired プロパティは <target>タグの unless属性で、 条件によりターゲットを実行するのに使われます。 例えば、次のようなターゲットを実行すると:

<target name="xmlBuild" depends="chkXmlBuild" unless="xmlBuild.notRequired">
  ...
</target>

最初に、 xmlBuild.notRequiredが設定されたかどうか判定する <uptodate>タスクが入っている chkXmlBuild ターゲットを実行します。 次に、 unless属性で名づけられたプロパティは 設定されたかどうか判定されます。 設定された場合(即ち jar ファイルが最新だった場合)、 xmlBuildターゲットは実行されません。

次の例では、一つのソースファイルが、一つのターゲットに対して判定されるのを示しています:

  <uptodate property="isUpToDate"
            srcfile="/usr/local/bin/testit"
            targetfile="${build}/.flagfile"/>

/usr/local/bin/testit${build}/.flagfileよりも新しい場合、 プロパティisUpToDatetrueに設定します。

マッパに関係する使い方を示します。

    <uptodate property="checkUptodate.uptodate">
      <srcfiles dir="src" includes="*" />
      <mapper type="merge" to="../dest/output.done"/>
    </uptodate>
    <echo message="checkUptodate result: ${checkUptodate.uptodate}" />
  

前の例はちょっと分かりにくいので、絶対パスを利用したほうがいいです。

    <property name="dest.dir" location="dest"/>
    <uptodate property="checkUptodate.uptodate">
      <srcfiles dir="src" includes="*" />
      <mapper type="merge" to="${dest.dir}/output.done"/>
    </uptodate>
  

Copyright © 2000-2004 The Apache Software Foundation. All rights Reserved.

[訳注:これは漆島賢二、横田聡が翻訳しました。日本語訳に対するコメントがあれば report@jajakarta.orgに送ってください]