自 Apache Ant 1.6 起.
更改文件或指定目录中所有文件的拥有者。目前,它仅在 Unix 下有效。owner 属性等效于 chown 命令的相应参数。
可以使用嵌套的 <fileset>
、<dirset>
和 <filelist>
元素来指定 FileSet、DirSet 或 FileList。
自 Ant 1.7 起,此任务支持任意 资源集合 作为嵌套元素。
默认情况下,此任务将使用单个底层 chown 命令调用。如果您正在处理大量文件,这可能会导致命令行过长,超出您的操作系统限制。如果您遇到此类问题,应将此任务的 maxparallel 属性设置为非零值。要使用的数字高度依赖于您的文件名长度(您的目录树的深度)和您的操作系统,因此您需要进行一些实验。POSIX 建议命令行长度限制至少为 4096 个字符,这可以为您提供一个近似值,您可以将其用作这些实验的初始值。
默认情况下,此任务除非检测到它正在 Unix 系统上运行,否则不会执行任何操作。如果您确定您的 PATH
上有一个 chown 可执行文件,该文件与 Unix 命令的命令行兼容,则可以使用任务的 os 属性并将它的值设置为您的当前操作系统。
属性 | 描述 | 必需 |
---|---|---|
file | 必须更改其所有者的文件或目录。 | 是,除非指定了嵌套的 <fileset|filelist|dirset> 元素 |
owner | 新的所有者。 | 是 |
parallel | 使用单个 chown 命令处理所有指定的文件。 | 否;默认为 true |
type | “file”、“dir”或“both”之一。如果设置为“file”,则只更改普通文件的拥有者。如果设置为“dir”,则只考虑目录。 注意:type 属性不适用于嵌套的 dirset ——dirset 始终隐式地假定类型为 dir。 |
否;默认为 file |
maxparallel | 通过一次最多传递这么多源文件来限制并行程度。将其设置为负整数表示无限制。 | 否;默认为无限制 |
verbose | 是否在执行后打印摘要。 | 否;默认为 false |
os | 可以在其上执行命令的操作系统列表。 | 否 |
osfamily | 在 <os> 条件中使用的操作系统系列。 | 否;默认为 unix |
在 UNIX 系统上使 start.sh 文件属于 coderjoe。
<chown file="${dist}/start.sh" owner="coderjoe"/>
在 UNIX 系统上使 ${dist}/bin 下的所有 .sh 文件属于 coderjoe。
<chown owner="coderjoe"> <fileset dir="${dist}/bin" includes="**/*.sh"/> </chown>
在 UNIX 系统上使 shared/sources1 下的所有文件(除了任何名为 trial 的目录下的文件)属于 coderjoe。此外,属于具有 id=other.shared.sources
的 FileSet 的所有文件都将获得相同的拥有者。
<chown owner="coderjoe"> <fileset dir="shared/sources1"> <exclude name="**/trial/**"/> </fileset> <fileset refid="other.shared.sources"/> </chown>
使 cgi 脚本、扩展名为 .old 的文件或以 private_ 开头的目录属于名为 webadmin 的用户。以 .old 结尾的目录或以 private_ 开头的文件将保持不受影响。
<chown owner="webadmin" type="file"> <fileset dir="/web"> <include name="**/*.cgi"/> <include name="**/*.old"/> </fileset> <dirset dir="/web"> <include name="**/private_*"/> </dirset> </chmod>