# Class WriteProperties

java.lang.Object
org.gradle.api.internal.AbstractTask
org.gradle.api.DefaultTask
org.gradle.api.tasks.WriteProperties

All Implemented Interfaces:
  `Comparable<Task>, org.gradle.api.internal.DynamicObjectAware, org.gradle.api.internal.TaskInternal, Named, ExtensionAware, Task, Configurable<Task>`

@CacheableTask public abstract class WriteProperties extends DefaultTask
Writes a `Properties` in a way that the results can be expected to be reproducible.

There are a number of differences compared to how properties are stored:

- no timestamp comment is generated at the beginning of the file
- the lines in the resulting files are separated by a pre-set separator (defaults to '\n') instead of the system default line separator
- the properties are sorted alphabetically

Like with `Properties`, Unicode characters are escaped when using the default Latin-1 (ISO-8559-1) encoding.

Since:
  3.3
See Also:
  - `Properties.store(OutputStream, String)`

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from interface Named

  `Named.Namer`

- ## Field Summary

  ### Fields inherited from interface Task

  `TASK_ACTION, TASK_CONSTRUCTOR_ARGS, TASK_DEPENDS_ON, TASK_DESCRIPTION, TASK_GROUP, TASK_NAME, TASK_OVERWRITE, TASK_TYPE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `WriteProperties()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `@Nullable String`
  `getComment()`
  Returns the optional comment to add at the beginning of the properties file.
  `abstract RegularFileProperty`
  `getDestinationFile()`
  The output properties file.
  `String`
  `getEncoding()`
  Returns the encoding used to write the properties file.
  `String`
  `getLineSeparator()`
  Returns the line separator to be used when creating the properties file.
  `Map<String,String>`
  `getProperties()`
  Returns an immutable view of properties to be written to the properties file.
  `void`
  `properties(Map<String,Object> properties)`
  Adds multiple properties to be written to the properties file.
  `void`
  `property(String name, Object value)`
  Adds a property to be written to the properties file.
  `void`
  `setComment(@Nullable String comment)`
  Sets the optional comment to add at the beginning of the properties file.
  `void`
  `setEncoding(String encoding)`
  Sets the encoding used to write the properties file.
  `void`
  `setLineSeparator(String lineSeparator)`
  Sets the line separator to be used when creating the properties file.
  `void`
  `setProperties(Map<String,Object> properties)`
  Sets all properties to be written to the properties file replacing any existing properties.
  `void`
  `writeProperties()`
  Write properties.

  ### Methods inherited from class DefaultTask

  `compareTo, configure, dependsOn, doFirst, doFirst, doFirst, doLast, doLast, doLast, finalizedBy, getActions, getAnt, getDependsOn, getDescription, getDestroyables, getDidWork, getEnabled, getExtensions, getFinalizedBy, getGroup, getInputs, getLocalState, getLogger, getLogging, getMustRunAfter, getName, getOutputs, getPath, getProject, getShouldRunAfter, getState, getTaskDependencies, getTemporaryDir, getTimeout, hasProperty, mustRunAfter, onlyIf, onlyIf, onlyIf, property, setActions, setDependsOn, setDescription, setDidWork, setEnabled, setFinalizedBy, setGroup, setMustRunAfter, setOnlyIf, setOnlyIf, setOnlyIf, setProperty, setShouldRunAfter, shouldRunAfter, usesService`

  ### Methods inherited from class org.gradle.api.internal.AbstractTask

  `acceptServiceReferences, appendParallelSafeAction, doNotTrackState, doNotTrackStateIf, getAsDynamicObject, getIdentityPath, getImpliesSubProjects, getLifecycleDependencies, getLoggingManager, getOnlyIf, getReasonNotToTrackState, getReasonsNotToTrackState, getReasonTaskIsIncompatibleWithConfigurationCache, getRequiredServices, getServices, getSharedResources, getStandardOutputCapture, getTaskActions, getTaskIdentity, getTemporaryDirFactory, hasTaskActions, injectIntoNewInstance, isCompatibleWithConfigurationCache, isEnabled, isHasCustomActions, notCompatibleWithConfigurationCache, prependParallelSafeAction, restoreOnlyIf, restoreTaskActions, service, setImpliesSubProjects`

  ### Methods inherited from class Object

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

  ### Methods inherited from interface Task

  `doNotTrackState, notCompatibleWithConfigurationCache, service`

- ## Constructor Details

  - ### WriteProperties

    public WriteProperties()

- ## Method Details

  - ### getProperties

    @Input public Map<String,String> getProperties()
    Returns an immutable view of properties to be written to the properties file.
    Since:
      3.3

  - ### setProperties

    public void setProperties(Map<String,Object> properties)
    Sets all properties to be written to the properties file replacing any existing properties.
    Since:
      3.3
    See Also:
      - `properties(Map)`
      - `property(String, Object)`

  - ### property

    public void property(String name, Object value)
    Adds a property to be written to the properties file.

    A property's value will be coerced to a `String` with `String#valueOf(Object)` or a `Callable` returning a value to be coerced into a `String`.

    Values are not allowed to be null.

    Parameters:
      `name` - Name of the property
      `value` - Value of the property
    Since:
      3.4

  - ### properties

    public void properties(Map<String,Object> properties)
    Adds multiple properties to be written to the properties file.

    This is a convenience method for calling `property(String, Object)` multiple times.

    Parameters:
      `properties` - Properties to be added
    Since:
      3.4
    See Also:
      - `property(String, Object)`

  - ### getLineSeparator

    @Input public String getLineSeparator()
    Returns the line separator to be used when creating the properties file. Defaults to `\n`.
    Since:
      3.3

  - ### setLineSeparator

    public void setLineSeparator(String lineSeparator)
    Sets the line separator to be used when creating the properties file.
    Since:
      3.3

  - ### getComment

    @Optional @Input public @Nullable String getComment()
    Returns the optional comment to add at the beginning of the properties file.
    Since:
      3.3

  - ### setComment

    public void setComment(@Nullable String comment)
    Sets the optional comment to add at the beginning of the properties file.
    Since:
      3.3

  - ### getEncoding

    @Input public String getEncoding()
    Returns the encoding used to write the properties file. Defaults to ISO_8859_1. If set to anything different, unicode escaping is turned off.
    Since:
      3.3

  - ### setEncoding

    public void setEncoding(String encoding)
    Sets the encoding used to write the properties file. Defaults to ISO_8859_1. If set to anything different, unicode escaping is turned off.
    Since:
      3.3

  - ### getDestinationFile

    @OutputFile public abstract RegularFileProperty getDestinationFile()
    The output properties file.
    Since:
      8.1

  - ### writeProperties

    public void writeProperties() throws IOException
    Write properties.
    Throws:
      `IOException`
    Since:
      3.3