Apache Ant 1.6 以降.
指定されたディレクトリ内のファイルまたはすべてのファイルのオーナーを変更します。現時点では、Unixでのみ有効です。オーナー属性は、chownコマンドの対応する引数と同じです。
<fileset>、<dirset>、および<filelist>の各要素をネストすることで、ファイルセット、ディレクトリセット、またはファイルリストを指定できます。
Ant 1.7 以降、このタスクは、ネストした要素として任意のリソースコレクションをサポートしています。
このタスクはデフォルトで、基礎となるchownコマンドを1回だけ呼び出します。多数のファイルを使用している場合、オペレーティングシステムで処理できるコマンドラインの長さを超える可能性があります。このような問題が発生した場合は、このタスクのmaxparallel属性をゼロ以外の値に設定してください。使用する数値は、ファイル名の長さ(ディレクトリツリーの階層)およびオペレーティングシステムに大きく依存するため、多少試行錯誤する必要があります。POSIXでは、コマンドラインの長さ制限は少なくとも4096文字であることが推奨されているため、この数値は、この試行錯誤の初期値として使用できる目安になります。
このタスクはデフォルトでは、Unixシステムで実行されていることが検出されない限り、何も実行しません。確実にUnixコマンドとコマンドライン互換のchown実行ファイルがPATHにあることがわかっている場合は、タスクのos属性を使用して、現在の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>条件で使用される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のファイルセットに属するすべてのファイルも同じオーナーになります。
<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>