2001-02-13 12:32:01 +00:00
|
|
|
<html>
|
|
|
|
|
|
|
|
<head>
|
|
|
|
<meta http-equiv="Content-Language" content="en-us">
|
2001-10-30 10:05:39 +00:00
|
|
|
<title>Apache Ant User Manual</title>
|
2001-02-13 12:32:01 +00:00
|
|
|
</head>
|
|
|
|
|
|
|
|
<body>
|
|
|
|
|
|
|
|
<h2><a name="jar">Jar</a></h2>
|
|
|
|
<h3>Description</h3>
|
|
|
|
<p>Jars a set of files.</p>
|
|
|
|
<p>The <i>basedir</i> attribute is the reference directory from where to jar.</p>
|
|
|
|
<p>Note that file permissions will not be stored in the resulting jarfile.</p>
|
|
|
|
<p>It is possible to refine the set of files that are being jarred. This can be
|
|
|
|
done with the <i>includes</i>, <i>includesfile</i>, <i>excludes</i>, <i>excludesfile</i> and <i>defaultexcludes</i>
|
|
|
|
attributes. With the <i>includes</i> or <i>includesfile</i> attribute you specify the files you want to
|
|
|
|
have included by using patterns. The <i>exclude</i> or <i>excludesfile</i> attribute is used to specify
|
|
|
|
the files you want to have excluded. This is also done with patterns. And
|
|
|
|
finally with the <i>defaultexcludes</i> attribute, you can specify whether you
|
|
|
|
want to use default exclusions or not. See the section on <a
|
|
|
|
href="../dirtasks.html#directorybasedtasks">directory based tasks</a>, on how the
|
|
|
|
inclusion/exclusion of files works, and how to write patterns.</p>
|
|
|
|
<p>This task forms an implicit <a href="../CoreTypes/fileset.html">FileSet</a> and
|
|
|
|
supports all attributes of <code><fileset></code>
|
|
|
|
(<code>dir</code> becomes <code>basedir</code>) as well as the nested
|
|
|
|
<code><include></code>, <code><exclude></code> and
|
|
|
|
<code><patternset></code> elements.</p>
|
|
|
|
<p>You can also use nested file sets for more flexibility, and specify
|
|
|
|
multiple ones to merge together different trees of files into one JAR.
|
|
|
|
The extended fileset attributes from the zip task are also available
|
|
|
|
in the jar task.
|
|
|
|
See the <a href="zip.html">Zip</a> task for more details and examples.</p>
|
|
|
|
<p>If the manifest is omitted, a simple one will be supplied by Ant.
|
|
|
|
You should not include <samp>META-INF/MANIFEST.MF</samp> in your set of files.</p>
|
2001-08-30 13:23:14 +00:00
|
|
|
<p>The <code>update</code> parameter controls what happens if the
|
|
|
|
JAR file already exists. When set to <code>yes</code>, the JAR file is
|
|
|
|
updated with the files specified. When set to <code>no</code> (the
|
|
|
|
default) the JAR file is overwritten. An example use of this is
|
2001-09-08 01:05:18 +00:00
|
|
|
provided in the <a href="zip.html">Zip task documentation</a>.</p>
|
2001-02-13 12:32:01 +00:00
|
|
|
<p>(The Jar task is a shortcut for specifying the manifest file of a JAR file.
|
|
|
|
The same thing can be accomplished by using the <i>fullpath</i>
|
|
|
|
attribute of a zipfileset in a Zip task. The one difference is that if the
|
|
|
|
<i>manifest</i> attribute is not specified, the Jar task will
|
|
|
|
include an empty one for you.)</p>
|
|
|
|
|
2001-12-12 10:31:25 +00:00
|
|
|
<p>Manifests are processed by the Jar task according to the
|
|
|
|
<a href="http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html">Jar file specification.</a>
|
|
|
|
Note in particular that this may result in manifest lines greater than 72 bytes
|
|
|
|
being wrapped and continued on the next line.
|
|
|
|
</p>
|
|
|
|
|
2001-02-13 12:32:01 +00:00
|
|
|
<h3>Parameters</h3>
|
|
|
|
<table border="1" cellpadding="2" cellspacing="0">
|
|
|
|
<tr>
|
|
|
|
<td valign="top"><b>Attribute</b></td>
|
|
|
|
<td valign="top"><b>Description</b></td>
|
|
|
|
<td align="center" valign="top"><b>Required</b></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
2001-09-12 14:21:43 +00:00
|
|
|
<td valign="top">file</td>
|
2001-02-13 12:32:01 +00:00
|
|
|
<td valign="top">the jar-file to create.</td>
|
|
|
|
<td valign="top" align="center">Yes</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td valign="top">basedir</td>
|
|
|
|
<td valign="top">the directory from which to jar the files.</td>
|
|
|
|
<td valign="top" align="center">No</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td valign="top">compress</td>
|
|
|
|
<td valign="top">Not only store data but also compress them, defaults to true</td>
|
|
|
|
<td align="center" valign="top">No</td>
|
|
|
|
</tr>
|
2001-07-05 13:10:26 +00:00
|
|
|
<tr>
|
|
|
|
<td valign="top">encoding</td>
|
|
|
|
<td valign="top">The character encoding to use for filenames
|
|
|
|
inside the archive. Defaults to UTF8. <strong>It is not
|
|
|
|
recommended to change this value as the created archive will most
|
|
|
|
likely be unreadable for Java otherwise.</strong></td>
|
|
|
|
<td align="center" valign="top">No</td>
|
|
|
|
</tr>
|
2001-07-12 07:36:50 +00:00
|
|
|
<tr>
|
|
|
|
<td valign="top">filesonly</td>
|
|
|
|
<td valign="top">Store only file entries, defaults to false</td>
|
|
|
|
<td align="center" valign="top">No</td>
|
|
|
|
</tr>
|
2001-02-13 12:32:01 +00:00
|
|
|
<tr>
|
|
|
|
<td valign="top">includes</td>
|
|
|
|
<td valign="top">comma separated list of patterns of files that must be
|
|
|
|
included. All files are included when omitted.</td>
|
|
|
|
<td valign="top" align="center">No</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td valign="top">includesfile</td>
|
|
|
|
<td valign="top">the name of a file. Each line of this file is
|
|
|
|
taken to be an include pattern</td>
|
|
|
|
<td valign="top" align="center">No</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td valign="top">excludes</td>
|
|
|
|
<td valign="top">comma separated list of patterns of files that must be
|
|
|
|
excluded. No files (except default excludes) are excluded when omitted.</td>
|
|
|
|
<td valign="top" align="center">No</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td valign="top">excludesfile</td>
|
|
|
|
<td valign="top">the name of a file. Each line of this file is
|
|
|
|
taken to be an exclude pattern</td>
|
|
|
|
<td valign="top" align="center">No</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td valign="top">defaultexcludes</td>
|
|
|
|
<td valign="top">indicates whether default excludes should be used or not
|
|
|
|
("yes"/"no"). Default excludes are used when omitted.</td>
|
|
|
|
<td valign="top" align="center">No</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td valign="top">manifest</td>
|
|
|
|
<td valign="top">the manifest file to use.</td>
|
|
|
|
<td valign="top" align="center">No</td>
|
|
|
|
</tr>
|
2001-08-30 13:23:14 +00:00
|
|
|
<tr>
|
|
|
|
<td valign="top">update</td>
|
|
|
|
<td valign="top">indicates whether to update or overwrite
|
|
|
|
the destination file if it already exists.</td>
|
|
|
|
<td valign="top" align="center">No</td>
|
|
|
|
</tr>
|
2001-02-13 12:32:01 +00:00
|
|
|
</table>
|
2001-12-12 10:31:25 +00:00
|
|
|
|
2001-04-04 13:35:05 +00:00
|
|
|
<h3>Nested elements</h3>
|
|
|
|
<h4>metainf</h4>
|
|
|
|
<p>The nested <code>metainf</code> element specifies a <a
|
|
|
|
href="../CoreTypes/fileset.html">FileSet</a>. All files included in this fileset will
|
|
|
|
end up in the <code>META-INF</code> directory of the jar file. If this
|
|
|
|
fileset includes a file named <code>MANIFEST.MF</code>, the file is
|
|
|
|
ignored and you will get a warning.</p>
|
2001-12-12 10:31:25 +00:00
|
|
|
|
|
|
|
<h4>Manifest</h4>
|
|
|
|
<p>
|
|
|
|
The manifest nested element allows the manifest for the Jar file to be
|
|
|
|
provided inline in the build file rather than in an external file. This
|
|
|
|
makes it easy to produce Jar manifests which take values from Ant properties.
|
|
|
|
If both an inline manifest and an external file are both specified, the
|
|
|
|
manifests are merged.
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
The manifest element supports nested elements to reflect the structure of
|
|
|
|
manifests, according to the
|
|
|
|
<a href="http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html">Jar file
|
|
|
|
specification</a>. Specifically, a manifest
|
|
|
|
element consists of a set of attributes and sections. These sections in turn
|
|
|
|
may contain attributes.
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p>When using inline manifests, the Jar task will check whether the build
|
|
|
|
file is more recent that the Jar file when deciding whether to rebuild the
|
|
|
|
Jar. This will not take into account property file changes which may affect
|
|
|
|
the resulting Jar.
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p> The manifest element itself does not support any attributes. It serves
|
|
|
|
merely as a container for the attribute and section elements that make up the
|
|
|
|
manifest. The attributes of those elements are as follows:
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
<b>Section</b>
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
<table border="1" cellpadding="2" cellspacing="0">
|
|
|
|
<tr>
|
|
|
|
<td valign="top"><b>Attribute</b></td>
|
|
|
|
<td valign="top"><b>Description</b></td>
|
|
|
|
<td align="center" valign="top"><b>Required</b></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td valign="top">Name</td>
|
|
|
|
<td valign="top">The name of the section</td>
|
|
|
|
<td valign="top" align="center">Yes</td>
|
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
<b>Attribute</b>
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
<table border="1" cellpadding="2" cellspacing="0">
|
|
|
|
<tr>
|
|
|
|
<td valign="top"><b>Attribute</b></td>
|
|
|
|
<td valign="top"><b>Description</b></td>
|
|
|
|
<td align="center" valign="top"><b>Required</b></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td valign="top">Name</td>
|
|
|
|
<td valign="top">The name of the attribute</td>
|
|
|
|
<td valign="top" align="center">Yes</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td valign="top">Value</td>
|
|
|
|
<td valign="top">The value of the attribute</td>
|
|
|
|
<td valign="top" align="center">Yes</td>
|
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
</p>
|
|
|
|
|
2001-02-13 12:32:01 +00:00
|
|
|
<h3>Examples</h3>
|
2001-09-12 14:21:43 +00:00
|
|
|
<pre> <jar file="${dist}/lib/app.jar" basedir="${build}/classes"/></pre>
|
2001-02-13 12:32:01 +00:00
|
|
|
<p>jars all files in the <code>${build}/classes</code> directory into a file
|
|
|
|
called <code>app.jar</code> in the <code>${dist}/lib</code> directory.</p>
|
2001-09-12 14:21:43 +00:00
|
|
|
<pre> <jar file="${dist}/lib/app.jar"
|
2001-02-13 12:32:01 +00:00
|
|
|
basedir="${build}/classes"
|
|
|
|
excludes="**/Test.class"
|
|
|
|
/></pre>
|
|
|
|
<p>jars all files in the <code>${build}/classes</code> directory into a file
|
|
|
|
called <code>app.jar</code> in the <code>${dist}/lib</code> directory. Files
|
|
|
|
with the name <code>Test.class</code> are excluded.</p>
|
2001-09-12 14:21:43 +00:00
|
|
|
<pre> <jar file="${dist}/lib/app.jar"
|
2001-02-13 12:32:01 +00:00
|
|
|
basedir="${build}/classes"
|
|
|
|
includes="mypackage/test/**"
|
|
|
|
excludes="**/Test.class"
|
|
|
|
/></pre>
|
|
|
|
<p>jars all files in the <code>${build}/classes</code> directory into a file
|
|
|
|
called <code>app.jar</code> in the <code>${dist}/lib</code> directory. Only
|
|
|
|
files under the directory <code>mypackage/test</code> are used, and files with
|
|
|
|
the name <code>Test.class</code> are excluded.</p>
|
2001-09-12 14:21:43 +00:00
|
|
|
<pre> <jar file="${dist}/lib/app.jar">
|
2001-02-13 12:32:01 +00:00
|
|
|
<fileset dir="${build}/classes"
|
|
|
|
excludes="**/Test.class"
|
|
|
|
/>
|
|
|
|
<fileset dir="${src}/resources"/>
|
|
|
|
</jar></pre>
|
|
|
|
<p>jars all files in the <code>${build}/classes</code> directory and also
|
|
|
|
in the <code>${src}/resources</code> directory together into a file
|
|
|
|
called <code>app.jar</code> in the <code>${dist}/lib</code> directory.
|
|
|
|
Files with the name <code>Test.class</code> are excluded.
|
|
|
|
If there are files such as <code>${build}/classes/mypackage/MyClass.class</code>
|
|
|
|
and <code>${src}/resources/mypackage/image.gif</code>, they will appear
|
|
|
|
in the same directory in the JAR (and thus be considered in the same package
|
|
|
|
by Java).</p>
|
|
|
|
|
2001-12-12 10:31:25 +00:00
|
|
|
<pre> <jar jarfile="test.jar" basedir=".">
|
|
|
|
<include name="build"/>
|
|
|
|
<manifest>
|
|
|
|
<attribute name="Built-By" value="${user.name}"/>
|
|
|
|
<section name="common/class1.class">
|
|
|
|
<attribute name="Sealed" value="false"/>
|
|
|
|
</section>
|
|
|
|
</manifest>
|
|
|
|
</jar></pre>
|
|
|
|
<p>
|
|
|
|
This is an example of an inline manifest specification. Note that the Built-By
|
|
|
|
attribute will take the value of the Ant property ${user.name}. The manifest
|
|
|
|
produced by the above would look like this:
|
|
|
|
</p>
|
|
|
|
<pre><code>Manifest-Version: 1.0
|
|
|
|
Built-By: conor
|
|
|
|
Created-By: Apache Ant 1.5alpha
|
|
|
|
|
|
|
|
Name: common/class1.class
|
|
|
|
Sealed: false</code></pre>
|
|
|
|
|
2001-02-13 12:32:01 +00:00
|
|
|
<hr>
|
|
|
|
<p align="center">Copyright © 2000,2001 Apache Software Foundation. All rights
|
|
|
|
Reserved.</p>
|
|
|
|
|
|
|
|
</body>
|
|
|
|
</html>
|
|
|
|
|