ターゲットファイルまたはターゲットファイルセットが、ソースファイルまたはソースファイルセットより最新の場合に、プロパティを設定します。単一のソースファイルは srcfile 属性を使用して指定されます。ソースファイルセットは、ネストした <srcfiles> 要素を使用して指定されます。これらは FileSet である一方、複数のターゲットファイルはネストされた <mapper> 要素を使用して指定されます。
既定では、ソースファイルのタイムスタンプが対応するターゲットファイルのタイムスタンプより新しい場合、プロパティの値は true
に設定されます。 value 属性を指定することにより、値を既定以外の値に設定できます。
<srcfiles> 要素を <mapper> 要素も指定せずに使用する場合は、既定の動作では to 属性が targetfile 属性の値に設定された マージマッパー が使用されます。
通常、このタスクは指定したファイルの相対的な時間に応じて、ターゲット実行を避けるために役立つプロパティを設定するために使用されます。
| 属性 | 説明 | 必須 |
|---|---|---|
| property | 設定するプロパティの名前。 | はい |
| value | プロパティに設定する値。 | いいえ。既定値は trueです。 |
| srcfile | ターゲットファイルに対してチェックするファイル。 | はい。ネストした <srcfiles> または <srcresources> 要素がある場合を除きます。 |
| targetfile | 状態を判断するファイル。 | はい。ネストされた <mapper> 要素がある場合を除きます。 |
ネストされた <srcfiles> 要素は fileset であり、ターゲットファイルに対してチェックするファイルセットを指定できます。
注意: srcfile 属性またはネストされた <srcfiles> 要素を指定できますが、両方を指定することはできません。
このタスクは srcfiles ファイルセットによって一致すると見なされるディレクトリを完全に無視することに注意してください。通常のファイルのみが考慮されます。ディレクトリにも適用されるロジックが必要な場合は、ネストされた srcresources 要素と dirset(例)を使用します。
Apache Ant 1.7 以降
ネストされた <srcresources> 要素は union であり、ターゲットファイルに対してチェックするリソースのコレクションを指定できます。
ネストされた <mapper> 要素を使用すると、一連のソースファイルに対して最新であるかどうかをチェックする一連のターゲットファイルを指定できます。
マッパー to 属性はターゲットファイル、またはネストされた srcfiles 要素の dir 属性に対する相対パスです。
Ant 1.6.3 以降、マッパー要素の代わりに filenamemapper タイプを使用できます。
${deploy}/xmlClasses.jar ファイルが ${src}/xml ディレクトリ内のいずれかの DTD ファイルよりも最新の場合に、プロパティ xmlBuild.notRequired を true
に設定します。
<uptodate property="xmlBuild.notRequired" targetfile="${deploy}\xmlClasses.jar">
<srcfiles dir="${src}/xml" includes="**/*.dtd"/>
</uptodate>
次のように記述できます。
<uptodate property="xmlBuild.notRequired">
<srcfiles dir= "${src}/xml" includes="**/*.dtd"/>
<mapper type="merge" to="${deploy}\xmlClasses.jar"/>
</uptodate>
as well.
xmlBuild.notRequired プロパティはその後、 unless 属性を使用してターゲットを条件付きで実行する <target> タグに使用できます。たとえば、次のターゲットを実行すると
<target name="xmlBuild" depends="chkXmlBuild" unless="xmlBuild.notRequired"> ... </target>
最初に <uptodate> タスクを含む chkXmlBuild
ターゲットを実行します。このタスクは xmlBuild.notRequired が設定されるかどうかを決定します。次に unless 属性で指定したプロパティが設定されているかどうかが確認されます。プロパティが設定されている場合(つまり、jarファイルが最新である場合)、xmlBuild
ターゲットは実行されません。
次の例は、1つのソースファイルと1つのターゲットファイルを照合することを示しています。
<uptodate property="isUpToDate"
srcfile="/usr/local/bin/testit"
targetfile="${build}/.flagfile"/>
/usr/local/bin/testit が ${build}/.flagfile よりも新しい場合、プロパティ isUpToDate を true
に設定します。
相対マッパーの使用方法を以下に示します。
<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>