source: other-projects/trunk/gs3-release-maker/apache-ant-1.6.5/docs/manual/CoreTasks/tar.html@ 14627

Last change on this file since 14627 was 14627, checked in by oranfry, 17 years ago

initial import of the gs3-release-maker

File size: 10.7 KB
Line 
1<html>
2
3<head>
4<meta http-equiv="Content-Language" content="en-us">
5<title>Tar Task</title>
6<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
7</head>
8
9<body>
10
11<h2><a name="tar">Tar</a></h2>
12<h3>Description</h3>
13<p>Creates a tar archive.</p>
14<p>The <i>basedir</i> attribute is the reference directory from where to tar.</p>
15<p>This task is a <a href="../dirtasks.html#directorybasedtasks">directory based task</a>
16and, as such, forms an implicit <a href="../CoreTypes/fileset.html">Fileset</a>. This
17defines which files, relative to the <i>basedir</i>, will be included in the
18archive. The tar task supports all the attributes of Fileset to refine the
19set of files to be included in the implicit fileset.</p>
20
21<p>In addition to the implicit fileset, the tar task supports nested filesets. These
22filesets are extended to allow control over the access mode, username and groupname
23to be applied to the tar entries. This is useful, for example, when preparing archives for
24Unix systems where some files need to have execute permission.</p>
25
26<p>Early versions of tar did not support path lengths greater than 100
27characters. Modern versions of tar do so, but in incompatible ways.
28The behaviour of the tar task when it encounters such paths is
29controlled by the <i>longfile</i> attribute.
30If the longfile attribute is set to <code>fail</code>, any long paths will
31cause the tar task to fail. If the longfile attribute is set to
32<code>truncate</code>, any long paths will be truncated to the 100 character
33maximum length prior to adding to the archive. If the value of the longfile
34attribute is set to <code>omit</code> then files containing long paths will be
35omitted from the archive. Either option ensures that the archive can be
36untarred by any compliant version of tar. If the loss of path or file
37information is not acceptable, and it rarely is, longfile may be set to the
38value <code>gnu</code>. The tar task will then produce a GNU tar file which
39can have arbitrary length paths. Note however, that the resulting archive will
40only be able to be untarred with GNU tar. The default for the longfile
41attribute is <code>warn</code> which behaves just like the gnu option except
42that it produces a warning for each file path encountered that does not match
43the limit.</p>
44
45<p>This task can perform compression by setting the compression attribute to "gzip"
46or "bzip2".</p>
47
48<h3>Parameters</h3>
49<table border="1" cellpadding="2" cellspacing="0">
50 <tr>
51 <td valign="top"><b>Attribute</b></td>
52 <td valign="top"><b>Description</b></td>
53 <td valign="top" align="center"><b>Required</b></td>
54 </tr>
55 <tr>
56 <td valign="top">destfile</td>
57 <td valign="top">the tar-file to create.</td>
58 <td align="center" valign="top">Yes</td>
59 </tr>
60 <tr>
61 <td valign="top">basedir</td>
62 <td valign="top">the directory from which to tar the files.</td>
63 <td align="center" valign="top">No</td>
64 </tr>
65 <tr>
66 <td valign="top">longfile</td>
67 <td valign="top">Determines how long files (&gt;100 chars) are to be
68 handled. Allowable values are &quot;truncate&quot;, &quot;fail&quot;,
69 &quot;warn&quot;, &quot;omit&quot; and &quot;gnu&quot;. Default is
70 &quot;warn&quot;.</td>
71 <td valign="top" align="center">No</td>
72 </tr>
73 <tr>
74 <td valign="top">includes</td>
75 <td valign="top">comma- or space-separated list of patterns of files that must be
76 included. All files are included when omitted.</td>
77 <td valign="top" align="center">No</td>
78 </tr>
79 <tr>
80 <td valign="top">includesfile</td>
81 <td valign="top">the name of a file. Each line of this file is
82 taken to be an include pattern</td>
83 <td valign="top" align="center">No</td>
84 </tr>
85 <tr>
86 <td valign="top">excludes</td>
87 <td valign="top">comma- or space-separated list of patterns of files that must be
88 excluded. No files (except default excludes) are excluded when omitted.</td>
89 <td valign="top" align="center">No</td>
90 </tr>
91 <tr>
92 <td valign="top">excludesfile</td>
93 <td valign="top">the name of a file. Each line of this file is
94 taken to be an exclude pattern</td>
95 <td valign="top" align="center">No</td>
96 </tr>
97 <tr>
98 <td valign="top">defaultexcludes</td>
99 <td valign="top">indicates whether default excludes should be used or not
100 (&quot;yes&quot;/&quot;no&quot;). Default excludes are used when omitted.</td>
101 <td valign="top" align="center">No</td>
102 </tr>
103 <tr>
104 <td valign="top">compression</td>
105 <td valign="top">compression method. Allowable values are
106 &quot;none&quot;, &quot;gzip&quot; and &quot;bzip2&quot;. Default is
107 &quot;none&quot;.</td>
108 <td valign="top" align="center">No</td>
109 </tr>
110</table>
111
112<h3>Nested Elements</h3>
113The tar task supports nested <a href="../CoreTypes/fileset.html">tarfileset</a> elements. These are
114extended Filesets which, in addition to the standard fileset elements, support three additional
115attributes
116
117<table border="1" cellpadding="2" cellspacing="0">
118 <tr>
119 <td valign="top"><b>Attribute</b></td>
120 <td valign="top"><b>Description</b></td>
121 <td valign="top" align="center"><b>Required</b></td>
122 </tr>
123 <tr>
124 <td valign="top">mode</td>
125 <td valign="top">A 3 digit octal string, specify the user, group
126 and other modes in the standard Unix fashion. Only applies to
127 plain files. Default is 644.</td>
128 <td align="center" valign="top">No</td>
129 </tr>
130 <tr>
131 <td valign="top">dirmode</td>
132 <td valign="top">A 3 digit octal string, specify the user, group
133 and other modes in the standard Unix fashion. Only applies to
134 directories. Default is 755. <em>since Ant 1.6</em>.</td>
135 <td align="center" valign="top">No</td>
136 </tr>
137 <tr>
138 <td valign="top">username</td>
139 <td valign="top">The username for the tar entry. This is not the same as the UID.
140 </td>
141 <td align="center" valign="top">No</td>
142 </tr>
143 <tr>
144 <td valign="top">group</td>
145 <td valign="top">The groupname for the tar entry. This is not the same as the GID.
146 </td>
147 <td align="center" valign="top">No</td>
148 </tr>
149 <tr>
150 <td valign="top">uid</td>
151 <td valign="top">The user identifier (UID) for the tar entry. This is an integer value
152 and is not the same as the username. <em>since Ant 1.6.2</em>.
153 </td>
154 <td align="center" valign="top">No</td>
155 </tr>
156 <tr>
157 <td valign="top">gid</td>
158 <td valign="top">The group identifier (GID) for the tar entry. <em>since Ant 1.6.2</em>.
159 </td>
160 <td align="center" valign="top">No</td>
161 </tr>
162 <tr>
163 <td valign="top">prefix</td>
164 <td valign="top">If the prefix attribute is set, all files in the fileset
165 are prefixed with that path in the archive.</td>
166 <td align="center" valign="top">No</td>
167 </tr>
168 <tr>
169 <td valign="top">fullpath</td>
170 <td valign="top">If the fullpath attribute is set, the file in the fileset
171 is written with that path in the archive. The prefix attribute, if specified, is
172 ignored. It is an error to have more than one file specified in
173 such a fileset.</td>
174 <td align="center" valign="top">No</td>
175 </tr>
176 <tr>
177 <td valign="top">preserveLeadingSlashes</td>
178 <td valign="top">Indicates whether leading `/'s should
179 be preserved in the file names. Default is <code>false</code>.</td>
180 <td align="center" valign="top">No</td>
181 </tr>
182</table>
183
184<h3>Examples</h3>
185<pre>
186&lt;tar tarfile=&quot;${dist}/manual.tar&quot; basedir=&quot;htdocs/manual&quot;/&gt;
187&lt;gzip zipfile=&quot;${dist}/manual.tar.gz&quot; src=&quot;${dist}/manual.tar&quot;/&gt;</pre>
188<p>tars all files in the <code>htdocs/manual</code> directory into a file called <code>manual.tar</code>
189in the <code>${dist}</code> directory, then applies the gzip task to compress
190it.</p>
191<pre>
192&lt;tar destfile=&quot;${dist}/manual.tar&quot;
193 basedir=&quot;htdocs/manual&quot;
194 excludes=&quot;mydocs/**, **/todo.html&quot;
195/&gt;</pre>
196<p>tars all files in the <code>htdocs/manual</code> directory into a file called <code>manual.tar</code>
197in the <code>${dist}</code> directory. Files in the directory <code>mydocs</code>,
198or files with the name <code>todo.html</code> are excluded.</p>
199
200<pre>
201&lt;tar destfile=&quot;${basedir}/docs.tar&quot;&gt;
202 &lt;tarfileset dir=&quot;${dir.src}/docs&quot;
203 fullpath=&quot;/usr/doc/ant/README&quot;
204 preserveLeadingSlashes=&quot;true&quot;&gt;
205 &lt;include name=&quot;readme.txt&quot;/&gt;
206 &lt;/tarfileset&gt;
207 &lt;tarfileset dir=&quot;${dir.src}/docs&quot;
208 prefix=&quot;/usr/doc/ant&quot;
209 preserveLeadingSlashes=&quot;true&quot;&gt;
210 &lt;include name=&quot;*.html&quot;/&gt;
211 &lt;/tarfileset&gt;
212&lt;/tar&gt;</pre>
213
214<p>
215 Writes the file <code>docs/readme.txt</code> as
216 <code>/usr/doc/ant/README</code> into the archive. All
217 <code>*.html</code> files in the <code>docs</code> directory are
218 prefixed by <code>/usr/doc/ant</code>, so for example
219 <code>docs/index.html</code> is written as
220 <code>/usr/doc/ant/index.html</code> to the archive.
221</p>
222
223
224<pre>
225&lt;tar longfile=&quot;gnu&quot;
226 destfile=&quot;${dist.base}/${dist.name}-src.tar&quot; &gt;
227 &lt;tarfileset dir=&quot;${dist.name}/..&quot; mode=&quot;755&quot; username=&quot;ant&quot; group=&quot;ant&quot;&gt;
228 &lt;include name=&quot;${dist.name}/bootstrap.sh&quot;/&gt;
229 &lt;include name=&quot;${dist.name}/build.sh&quot;/&gt;
230 &lt;/tarfileset&gt;
231 &lt;tarfileset dir=&quot;${dist.name}/..&quot; username=&quot;ant&quot; group=&quot;ant&quot;&gt;
232 &lt;include name=&quot;${dist.name}/**&quot;/&gt;
233 &lt;exclude name=&quot;${dist.name}/bootstrap.sh&quot;/&gt;
234 &lt;exclude name=&quot;${dist.name}/build.sh&quot;/&gt;
235 &lt;/tarfileset&gt;
236&lt;/tar&gt;
237</pre>
238
239<p>This example shows building a tar which uses the GNU extensions for long paths and
240where some files need to be marked as executable (mode 755)
241and the rest are use the default mode (read-write by owner). The first
242fileset selects just the executable files. The second fileset must exclude
243the executable files and include all others. </p>
244
245<p><strong>Note: </strong> The tar task does not ensure that a file is only selected
246by one fileset. If the same file is selected by more than one fileset, it will be included in the
247tar file twice, with the same path.</p>
248
249<p><strong>Note:</strong> The patterns in the include and exclude
250elements are considered to be relative to the corresponding dir
251attribute as with all other filesets. In the example above,
252<code>${dist.name}</code> is not an absolute path, but a simple name
253of a directory, so <code>${dist.name}</code> is a valid path relative
254to <code>${dist.name}/..</code>.</p>
255
256<hr>
257<p align="center">Copyright &copy; 2000-2002,2004-2005 The Apache Software Foundation. All rights
258Reserved.</p>
259
260</body>
261</html>
262
Note: See TracBrowser for help on using the repository browser.