自 Apache Ant 1.6 起.
變更指定目錄中檔案或所有檔案的所有者。目前僅在 Unix 中有效。所有者屬性等同於 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> 條件中使用的作業系統系列。 | 否;預設為 unix |
讓 start.sh 檔案屬於 UNIX 系統上的 coderjoe。
<chown file="${dist}/start.sh" owner="coderjoe"/>
讓 ${dist}/bin 下方的所有 .sh 檔案屬於 UNIX 系統上的 coderjoe。
<chown owner="coderjoe"> <fileset dir="${dist}/bin" includes="**/*.sh"/> </chown>
讓 shared/sources1 下方的所有檔案(除了任何名為 trial 的目錄下方檔案)屬於 UNIX 系統上的 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>