<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<title>BuildNumber Task</title>
</head>

<body>

<h2><a name="buildnumber">BuildNumber</a></h2>
<h3>Description</h3>
<p>This is a basic task that can be used to track build numbers.</p>
<p>It will first attempt to read a build number from a file (by default,
<code>build.number</code> in the current directory), then
set the property <code>build.number</code> to the value that was read in
(or to <code>0</code>, if no such value). It will then increment the
number by one and write it back out to the file.
(See the
<a href="../OptionalTasks/propertyfile.html">PropertyFile</a> task
if you need finer control over things such as the property name or
the number format.)
</p>

<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <td valign="top"><b>Attribute</b></td>
    <td valign="top"><b>Description</b></td>
    <td align="center" valign="top"><b>Required</b></td>
  </tr>
  <tr>
    <td valign="top">file</td>
    <td valign="top">The file to read and write the build number from/to.</td>
    <td align="center" valign="top">No; defaults to &quot;build.number&quot;</td>
  </tr>
</table>

<h3>Examples</h3>
<pre>  &lt;buildnumber/&gt;</pre>

<p>Read, increment, and write a build number to the default file,
<code>build.number</code>.</p>

<pre>  &lt;buildnumber file=&quot;mybuild.number&quot;/&gt;</pre>

<p>Read, increment, and write a build number to the file
<code>mybuild.number</code>.</p>

<hr><p align="center">Copyright &copy; 2002 Apache Software Foundation.
All rights Reserved.</p>

</body>
</html>

