PropertyFile (Apache Ant API)
Description: declaration: package: org.apache.tools.ant.taskdefs.optional, class: PropertyFile

Package org.apache.tools.ant.taskdefs.optional

# Class PropertyFile

java.lang.Object
org.apache.tools.ant.ProjectComponent
org.apache.tools.ant.Task
org.apache.tools.ant.taskdefs.optional.PropertyFile

All Implemented Interfaces:
  `java.lang.Cloneable`

    public class PropertyFile
    extends Task

Modifies settings in a property file.

The following is an example of its usage:

        <target name="setState">
          <property
            name="header"
            value="##Generated file - do not modify!"/>
          <propertyfile file="apropfile.properties" comment="${header}">
            <entry key="product.version.major" type="int"  value="5"/>
            <entry key="product.version.minor" type="int"  value="0"/>
            <entry key="product.build.major"   type="int"  value="0" />
            <entry key="product.build.minor"   type="int"  operation="+"/>
            <entry key="product.build.date"    type="date" value="now"/>
            <entry key="intSet" type="int" operation="=" value="681"/>
            <entry key="intDec" type="int" operation="-"/>
            <entry key="StringEquals" type="string" value="testValue"/>
         </propertyfile>
       </target>

The <propertyfile> task must have:

- file

Other parameters are:

- comment
- key
- operation
- type
- value (the final four being eliminated shortly)

The <entry> task must have:

- key

Other parameters are:

- operation
- type
- value
- default
- unit

If type is unspecified, it defaults to string.

Parameter values:

operation:
  - "=" (set -- default)
  - "-" (dec)
  - "+" (inc)
type:
  - "int"
  - "date"
  - "string"
value:
  - holds the default value, if the property was not found in property file
  - "now" In case of type "date", the value "now" will be replaced by the current date/time and used even if a valid date was found in the property file.

String property types can only use the "=" operation. Int property types can only use the "=", "-" or "+" operations.

The message property is used for the property file header, with "\\" being a newline delimiter character.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type | Class | Description
  --- | --- | ---
  `static class` | `PropertyFile.Entry` | Instance of this class represents nested elements of a task propertyfile.
  `static class` | `PropertyFile.Unit` | Borrowed from Tstamp

- ## Field Summary

  ### Fields inherited from class org.apache.tools.ant.Task

  `target, taskName, taskType, wrapper`

  ### Fields inherited from class org.apache.tools.ant.ProjectComponent

  `description, location, project`

- ## Constructor Summary

  Constructors
  Constructor | Description
  --- | ---
  `PropertyFile()` |

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `PropertyFile.Entry` | `createEntry()` | The entry nested element.
  `void` | `execute()` | Execute the task.
  `void` | `setComment​(java.lang.String hdr)` | optional header comment for the file
  `void` | `setFile​(java.io.File file)` | Location of the property file to be edited; required.
  `void` | `setJDKProperties​(boolean val)` | optional flag to use original Java properties (as opposed to layout preserving properties)

  ### Methods inherited from class org.apache.tools.ant.Task

  `bindToOwner, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, log, log, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType`

  ### Methods inherited from class org.apache.tools.ant.ProjectComponent

  `clone, getDescription, getLocation, getProject, setDescription, setLocation, setProject`

  ### Methods inherited from class java.lang.Object

  `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### PropertyFile

    public PropertyFile()

- ## Method Details

  - ### execute

    public void execute() throws BuildException
    Execute the task.
    Overrides:
      `execute` in class `Task`
    Throws:
      `BuildException` - on error.

  - ### createEntry

    public PropertyFile.Entry createEntry()
    The entry nested element.
    Returns:
      an entry nested element to be configured.

  - ### setFile

    public void setFile​(java.io.File file)
    Location of the property file to be edited; required.
    Parameters:
      `file` - the property file.

  - ### setComment

    public void setComment​(java.lang.String hdr)
    optional header comment for the file
    Parameters:
      `hdr` - the string to use for the comment.

  - ### setJDKProperties

    public void setJDKProperties​(boolean val)
    optional flag to use original Java properties (as opposed to layout preserving properties)
    Parameters:
      `val` - boolean