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