|
- <!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
- <html>
-
- <head>
- <meta http-equiv="Content-Language" content="en-us">
- <link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
- <title>Manifest Task</title>
- </head>
-
- <body>
-
- <h2><a name="manifest">Manifest</a></h2>
- <h3>Description</h3>
- <p>Creates a manifest file.</p>
-
- <p>This task can be used to write a Manifest file, optionally
- replacing or updating an existing file.</p>
-
-
-
- <p>Manifests are processed according to the
- <a href="http://java.sun.com/j2se/1.5.0/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. Note in particular that this may result in manifest lines
- greater than 72 bytes being wrapped and continued on the next
- line.</p>
-
- <p>
- The Ant team regularly gets complaints that this task in generating invalid
- manifests. By and large, this is not the case: we believe that we are following
- the specification to the letter. The usual problem is that some third party
- manifest reader is not following the same specification as well as they think
- they should; we cannot generate invalid manifest files just because one
- single application is broken. J2ME runtimes appear to be particularly troublesome.
- </p>
-
- <p>
- If you find that Ant generates manifests incompatible with your runtime, take
- a manifest it has built, fix it up however you need and switch to using the <zip>
- task to create the JAR, feeding in the hand-crafted manifest.
- </p>
-
-
-
- <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>
- <td valign="top">file</td>
- <td valign="top">the manifest-file to create/update.</td>
- <td valign="top" align="center">Yes</td>
- </tr>
- <tr>
- <td valign="top">mode</td>
- <td valign="top">One of "update" or "replace", default is "replace".</td>
- <td valign="top" align="center">No</td>
- </tr>
- <tr>
- <td valign="top">encoding</td>
- <td valign="top">The encoding used to read the existing manifest when updating.</td>
- <td valign="top" align="center">No, defaults to UTF-8 encoding.</td>
- </tr>
- </table>
-
- <h3>Nested elements</h3>
- <h4><a name="attribute">attribute</a></h4>
- <p>One attribute for the manifest file. Those attributes that are
- not nested into a section will be added to the "Main" section.</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, <br>
- must match the regexp <tt>[A-Za-z0-9][A-Za-z0-9-_]*</tt>.
- </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>
-
-
- <h4>section</h4>
- <p>A manifest section - you can nest <a
- href="#attribute">attribute</a> elements into sections.</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">No, if omitted it will be assumed
- to be the main section.</td>
- </tr>
- </table>
-
- <h3>Examples</h3>
-
- <pre>
- <manifest file="MANIFEST.MF">
- <attribute name="Built-By" value="${user.name}"/>
- <section name="common">
- <attribute name="Specification-Title" value="Example"/>
- <attribute name="Specification-Version" value="${version}"/>
- <attribute name="Specification-Vendor" value="Example Organization"/>
- <attribute name="Implementation-Title" value="common"/>
- <attribute name="Implementation-Version" value="${version} ${TODAY}"/>
- <attribute name="Implementation-Vendor" value="Example Corp."/>
- </section>
- <section name="common/class1.class">
- <attribute name="Sealed" value="false"/>
- </section>
- </manifest>
- </pre>
-
- <p>Creates or replaces the file MANIFEST.MF. Note that the Built-By
- attribute will take the value of the Ant property ${user.name}. The
- same is true for the ${version} and ${TODAY} properties. This example
- produces a MANIFEST.MF that contains
- <a href="http://java.sun.com/j2se/1.5.0/docs/guide/versioning/">package
- version identification</a> for the package <code>common</code>.</p>
-
- <p>The manifest produced by the above would look like this:</p>
-
- <pre><code>Manifest-Version: 1.0
- Built-By: bodewig
- Created-By: Apache Ant 1.7
-
- Name: common
- Specification-Title: Example
- Specification-Vendor: Example Organization
- Implementation-Vendor: Example Corp.
- Specification-Version: 1.2
- Implementation-Version: 1.2 February 19 2006
- Implementation-Title: common
-
- Name: common/class1.class
- Sealed: false
-
- </code></pre>
-
-
- </body>
- </html>
|