tar アーカイブを作成します。
basedir
属性は、tar の基準となるディレクトリです。
このタスクはディレクトリベースのタスクであり、暗黙的にFilesetを形成します。これにより、basedir
を基準とした、アーカイブに含めるファイルが定義されます。tar
タスクは、Fileset のすべての属性をサポートしており、暗黙的な fileset に含めるファイルのセットを絞り込むことができます。
暗黙的な filesetに加えて、tar
タスクはネストされたリソースコレクションと、特殊な形式の fileset をサポートしています。これらの fileset は拡張されており、tar エントリに適用されるアクセスモード、ユーザー名、グループ名を制御できます。これは、一部のファイルに実行権限が必要な Unix システム用のアーカイブを準備する場合などに役立ちます。デフォルトでは、このタスクはファイルに 644、ディレクトリに 755 の Unix 権限を使用します。
初期のバージョンのtar ユーティリティは、100 文字を超えるパスをサポートしていませんでした。その後、互換性のない複数の拡張機能が開発され、ファイル名が100文字を超える問題に対処したPAX拡張ヘッダー(pax ユーティリティで最初に導入された)を追加した新しい POSIX 標準が作成されるまで、様々な非互換な拡張が開発されました。現代のtarの実装はすべて、PAX 拡張ヘッダーをサポートしています。
Ant のtar のサポートはPAX拡張ヘッダーの標準よりも古いものであり、longfile
属性を使用して有効にできるさまざまな方言をサポートしています。longfile
属性が fail
に設定されている場合、長いパスがあると tar
タスクは失敗します。longfile
属性が truncate
に設定されている場合、長いパスはアーカイブに追加する前に100文字の最大長に切り捨てられます。longfile
属性の値が omit
に設定されている場合、長いパスを含むファイルはアーカイブから省略されます。どちらのオプションも、アーカイブを任意の準拠バージョンのtarで展開できるようにします。
パスまたはファイル情報の損失が許容できない場合(ほとんどの場合、許容できません)、longfile
を gnu
または posix
に設定できます。posix
を使用すると、Ant は PAX 拡張ヘッダーを追加し、gnu
を使用すると、新しいバージョンの GNU tar が oldgnu
と呼ぶ GNU tar 固有の拡張機能を追加します。GNU tar はデフォルトでこれらの拡張機能を作成しますが、PAX 拡張ヘッダーもサポートしています。どちらの選択肢も、任意の長さのパスを持つ tar ファイルを作成します。ただし、結果として得られるアーカイブは、選択した形式をサポートするtarツールでのみ展開できることに注意してください。
longfile
属性のデフォルトは warn
であり、gnu
オプションと同様に動作しますが、制限に一致しないファイルパスごとに警告を出力します。後方互換性の理由から gnu
ではなく posix
を使用します。
最高の相互運用性を実現するには、longfile
属性に fail
または posix
を使用してください。
このタスクは、compression
属性を gzip
、bzip2
、または xz
に設定することで圧縮を実行できます。
属性 | 説明 | 必須 |
---|---|---|
destfile | 作成する tar ファイル。 | はい |
basedir | ファイルの tar を行うディレクトリ。 | いいえ |
longfile | 長いファイル名(> 100 文字)の処理方法を決定します。許容される値は truncate、 fail、 warn、 omit、 gnu、および posixです。 |
いいえ。デフォルトは warn |
includes | 含める必要があるファイルのパターンをコンマまたはスペースで区切ったリスト。 | いいえ。デフォルトはすべて(**) |
includesfile | ファイル名。このファイルの各行は、include パターンとして扱われます。 | いいえ |
excludes | 除外する必要があるファイルのパターンをコンマまたはスペースで区切ったリスト。 | いいえ。デフォルトはデフォルトの除外、またはdefaultexcludes が noの場合はなし。 |
excludesfile | ファイル名。このファイルの各行は、exclude パターンとして扱われます。 | いいえ |
defaultexcludes | デフォルトの除外を使用するかどうかを示します(yes|no)。 |
いいえ。デフォルトは yes |
compression | 圧縮方法。許容される値は none、 gzip、 xz、および bzip2です。 |
いいえ。デフォルトは none |
encoding | tar ファイル内のファイル名に使用する文字エンコーディング。サポートされているエンコーディング のリストについては、こちらを参照してください。一般的に、tar形式は名前がシングルバイトエンコーディングを使用することを想定しており、ここでマルチバイトエンコーディングを指定すると、多くのtarツールで正しく展開できないアーカイブになる可能性があります。 Ant 1.9.5 以降 | いいえ。デフォルトはデフォルトの JVM 文字エンコーディング |
このタスクは、ネストされたtarfileset 要素をサポートしています。これらは拡張されたFileSetsであり、標準要素に加えて、追加の属性をサポートしています。
属性 | 説明 | 必須 |
---|---|---|
preserveLeadingSlashes | ファイル名の先頭の /を保持するかどうかを示します。 |
いいえ。デフォルトは false |
リソースコレクション は、アーカイブするファイルのグループを選択するために使用されます。
Apache Ant 1.7 より前は、ネストされた要素として<fileset>
のみがサポートされていました。
htdocs/manual ディレクトリ内のすべてのファイルを ${dist} ディレクトリ内の manual.tar というファイルに tar 化し、次に gzip
タスクを適用して圧縮します。
<tar destfile="${dist}/manual.tar" basedir="htdocs/manual"/> <gzip destfile="${dist}/manual.tar.gz" src="${dist}/manual.tar"/>
htdocs/manual ディレクトリ内のすべてのファイルを ${dist} ディレクトリ内の manual.tar というファイルに tar 化します。mydocs ディレクトリ内のファイル、または todo.html という名前のファイルは除外されます。
<tar destfile="${dist}/manual.tar" basedir="htdocs/manual" excludes="mydocs/**, **/todo.html"/>
docs/readme.txt ファイルを /usr/doc/ant/README としてアーカイブに書き込みます。docs ディレクトリ内のすべての *.html ファイルには /usr/doc/ant がプレフィックスとして付けられます。たとえば、docs/index.html は /usr/doc/ant/index.html としてアーカイブに書き込まれます。
<tar destfile="${basedir}/docs.tar"> <tarfileset dir="${dir.src}/docs" fullpath="/usr/doc/ant/README" preserveLeadingSlashes="true"> <include name="readme.txt"/> </tarfileset> <tarfileset dir="${dir.src}/docs" prefix="/usr/doc/ant" preserveLeadingSlashes="true"> <include name="*.html"/> </tarfileset> </tar>
長いパスに GNU 拡張機能を使用する tar を作成します。ここで、一部のファイルを executable(モード 755)としてマークし、残りのファイルはデフォルトモード(所有者による読み書き)を使用します。最初の fileset は、実行可能なファイルのみを選択します。2番目の fileset は、実行可能なファイルを exclude し、その他すべてのファイルを include する必要があります。
<tar longfile="gnu" destfile="${dist.base}/${dist.name}-src.tar"> <tarfileset dir="${dist.name}/.." filemode="755" username="ant" group="ant"> <include name="${dist.name}/bootstrap.sh"/> <include name="${dist.name}/build.sh"/> </tarfileset> <tarfileset dir="${dist.name}/.." username="ant" group="ant"> <include name="${dist.name}/**"/> <exclude name="${dist.name}/bootstrap.sh"/> <exclude name="${dist.name}/build.sh"/> </tarfileset> </tar>
注:tar
タスクは、ファイルが1つのリソースコレクションによってのみ選択されることを保証しません。同じファイルが複数のコレクションによって選択されている場合、同じパスでtarファイルに2回含まれます。
注:include
および exclude
要素のパターンは、他のすべての fileset と同様に、対応する dir
属性を基準とした相対パスと見なされます。上記の例では、${dist.name} は絶対パスではなく、ディレクトリの単純な名前であるため、${dist.name} は ${dist.name}/.. を基準とした有効な相対パスです。
ZIP アーカイブを GZip 圧縮された tar アーカイブとして再パッケージします。Unix ファイル権限が ZIP ファイルの一部として保存されている場合、それらは結果の tar アーカイブに保持されます。
<tar destfile="release.tar.gz" compression="gzip"> <zipfileset src="release.zip"/> </tar>
注:tar
タスクは tar ファイルを作成しますが、既存の tar ファイルに追加しません。代わりに、既存の tar ファイルは置き換えられます。Ant のほとんどのタスクと同様に、このタスクは、出力ファイル(この場合は tar ファイル)が入力ファイルよりも古い場合、または出力ファイルが存在しない場合にのみ動作します。