B.37 UpToDateTask
Prev | Appendix B. Core tasks | Next

## B.37 UpToDateTask

`UpToDateTask` tests if a file is newer than another file or files and sets a property if it is. This is a common way to avoid, possibly time consuming, creation of a target if none of the files/resources it depends on have changed.

Table B.40: Attributes

Name | Type | Description | Default | Required
--- | --- | --- | --- | ---
`property` | `String` | Name of the property that is to be set | n/a | Yes
`value` | `String` | The value the property is to be set to | `true` | No
`srcfile` | `String` | The file to check against target file(s) | n/a | Yes (or nested `fileset`)
`targetfile` | `String` | The file for which we want to determine the status | n/a | Yes (or nested`mapper`)

### B.37.1 Examples

    <uptodate property="propelBuild.notRequired" targetfile="${deploy}/propelClasses.tgz" >
      <fileset dir="${src}/propel">
        <include="**/*.php"/>
      </fileset>
    </uptodate>

The above example sets the property `propelBuild.notRequired` to true if the `${deploy}/propelClasses.tgz` file is more up-to-date than any of the PHP class files in the `${src}/propel` directory.

    <target name="CompileTarget">
      <uptodate property="target.uptodate" targetfile="main">
        <fileset refid="sources"/>
      </uptodate>
      <if>
        <not><isset property="target.uptodate"/></not>
       <then>
          <!-- Some commands to update the target ... -->
       </then>
      </if>
    </target>

The above example shows a common use when doing a "compile" type target where a single target depends on other source files. In this case the commands to update the target (whatever they are) are only run if any of the source files are more up to date than the target.

### B.37.2 Supported Nested Tags

- `filelist`

- `fileset`

- `mapper`

Prev | Up | Next
B.36 TypedefTask | Home | B.38 WaitForTask