org.apache.tools.ant.taskdefs

## Class SetPermissions

- java.lang.Object
- - org.apache.tools.ant.ProjectComponent
  - - org.apache.tools.ant.Task
    - - org.apache.tools.ant.taskdefs.SetPermissions

- All Implemented Interfaces:
    java.lang.Cloneable

      public class SetPermissions
      extends Task

  Sets `PosixFilePermission`s for resources.

  This task provides a subset of `Chmod`'s and `Attrib`'s abilities in less platform dependent way.

  It requires a file system that supports PosixFilePermissions for its full potential. It can optionally fall back to DosFilePermissions (only changing the readonly state) on file systems that don't support POSIX permissions. See `SetPermissions.NonPosixMode`

  Since:
    Ant 1.10.0

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `SetPermissions.NonPosixMode` Options for dealing with file systems that don't support POSIX permissions.

  - ### 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 and Description
    `SetPermissions()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `add(ResourceCollection rc)` Adds a collection of resources to set permissions on.
    `void` | `execute()` Called by the project to let the task do its work.
    `void` | `setFailOnError(boolean failonerror)` Set whether to fail when errors are encountered.
    `void` | `setMode(java.lang.String octalString)` A 3 digit octal string, specify the user, group and other modes in the standard Unix fashion;
    `void` | `setNonPosixMode(SetPermissions.NonPosixMode m)` Set what to do if changing the permissions of a file is not possible because the file-system doesn't support POSIX file permissions.
    `void` | `setPermissions(java.lang.String perms)` Adds permissions as a comma separated list.

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

    - #### SetPermissions

          public SetPermissions()

  - ### Method Detail

    - #### setPermissions

          public void setPermissions(java.lang.String perms)

      Adds permissions as a comma separated list.
      Parameters:
        `perms` - comma separated list of names of `PosixFilePermission`s.

    - #### setMode

          public void setMode(java.lang.String octalString)

      A 3 digit octal string, specify the user, group and other modes in the standard Unix fashion;
      Parameters:
        `octalString` - a `String` value

    - #### setFailOnError

          public void setFailOnError(boolean failonerror)

      Set whether to fail when errors are encountered. If false, note errors to the output but keep going. Default is true.

      Only applies to IO and SecurityExceptions, see `setNonPosixMode(org.apache.tools.ant.taskdefs.SetPermissions.NonPosixMode)` for ways to deal with file-systems that don't support PosixPermissions.

      Parameters:
        `failonerror` - true or false.

    - #### setNonPosixMode

          public void setNonPosixMode(SetPermissions.NonPosixMode m)

      Set what to do if changing the permissions of a file is not possible because the file-system doesn't support POSIX file permissions.

      The default is `SetPermissions.NonPosixMode.fail`.

      Parameters:
        `m` - what to do if changing the permissions of a file is not possible

    - #### add

          public void add(ResourceCollection rc)

      Adds a collection of resources to set permissions on.
      Parameters:
        `rc` - a resource collection

    - #### execute

          public void execute()

      Description copied from class: `Task`
      Called by the project to let the task do its work. This method may be called more than once, if the task is invoked more than once. For example, if target1 and target2 both depend on target3, then running "ant target1 target2" will run all tasks in target3 twice.
      Overrides:
        `execute` in class `Task`