Package 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
`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
`SetPermissions()`

### Method Summary

All Methods Instance Methods Concrete Methods
`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`