自 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"/>
讓 ${dist}/bin 下方的所有 .sh 檔案屬於 UNIX 系統上的 coders 群組。
<chgrp group="coders"> <fileset dir="${dist}/bin" includes="**/*.sh"/> </chgrp>
讓 shared/sources1 下方的所有檔案(除了任何名為 trial 的目錄下方)屬於 UNIX 系統上的 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>