Package org.gradle.api.tasks

## 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`, `ExtensionAware`, `Task`, `org.gradle.util.Configurable<Task>`

      @CacheableTask
      public 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 org.gradle.api.Task

      `Task.Namer`

  - ### Field Summary

    - ### Fields inherited from interface org.gradle.api.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

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `String` | `getComment()` | Returns the optional comment to add at the beginning of the 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.
    `File` | `getOutputFile()` | Returns the output file to write the properties to.
    `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​(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` | `setOutputFile​(File outputFile)` | Sets the output file to write the properties to.
    `void` | `setOutputFile​(Object outputFile)` | Sets the output file to write the properties to.
    `void` | `setProperties​(Map<String,​Object> properties)` | Sets all properties to be written to the properties file replacing any existing properties.
    `void` | `writeProperties()` |

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

      `appendParallelSafeAction, compareTo, configure, dependsOn, doFirst, doFirst, doFirst, doLast, doLast, doLast, finalizedBy, getActions, getAnt, getAsDynamicObject, getConvention, getDependsOn, getDescription, getDestroyables, getDidWork, getEnabled, getExtensions, getFinalizedBy, getGroup, getIdentityPath, getImpliesSubProjects, getInputs, getLocalState, getLogger, getLogging, getMustRunAfter, getName, getOnlyIf, getOutputs, getPath, getProject, getRequiredServices, getServices, getSharedResources, getShouldRunAfter, getStandardOutputCapture, getState, getTaskActions, getTaskDependencies, getTaskIdentity, getTemporaryDir, getTemporaryDirFactory, getTimeout, hasProperty, hasTaskActions, injectIntoNewInstance, isEnabled, isHasCustomActions, mustRunAfter, onlyIf, onlyIf, prependParallelSafeAction, property, replaceLogger, setActions, setDependsOn, setDescription, setDidWork, setEnabled, setFinalizedBy, setGroup, setImpliesSubProjects, setMustRunAfter, setOnlyIf, setOnlyIf, setProperty, setShouldRunAfter, shouldRunAfter, usesService`

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

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

- - ### Constructor Detail

    - #### WriteProperties

          public WriteProperties()

  - ### Method Detail

    - #### 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.
      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`.

    - #### setLineSeparator

          public void setLineSeparator​(String lineSeparator)

      Sets the line separator to be used when creating the properties file.

    - #### getComment

          @Nullable
          @Optional
          @Input
          public String getComment()

      Returns the optional comment to add at the beginning of the properties file.

    - #### setComment

          public void setComment​(@Nullable
                                 String comment)

      Sets the optional comment to add at the beginning of the properties file.

    - #### 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.

    - #### 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.

    - #### getOutputFile

          @OutputFile
          public File getOutputFile()

      Returns the output file to write the properties to.

    - #### setOutputFile

          public void setOutputFile​(File outputFile)

      Sets the output file to write the properties to.
      Since:
        4.0

    - #### setOutputFile

          public void setOutputFile​(Object outputFile)

      Sets the output file to write the properties to.

    - #### writeProperties

          public void writeProperties()
                               throws IOException

      Throws:
        `IOException`