| <!DOCTYPE html> |
| <!-- |
| 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 |
| |
| https://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 lang="en"> |
| |
| <head> |
| <link rel="stylesheet" type="text/css" href="../stylesheets/style.css"> |
| <title>Manifest Task</title> |
| </head> |
| |
| <body> |
| |
| <h2 id="manifest">Manifest</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="https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html" target="_top">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 Apache 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. Java ME 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 <a href="zip.html">zip</a> task to create |
| the JAR, feeding in the hand-crafted manifest.</p> |
| |
| <h3>Parameters</h3> |
| <table class="attr"> |
| <tr> |
| <th scope="col">Attribute</th> |
| <th scope="col">Description</th> |
| <th scope="col">Required</th> |
| </tr> |
| <tr> |
| <td>file</td> |
| <td>the manifest-file to create/update.</td> |
| <td>Yes</td> |
| </tr> |
| <tr> |
| <td>mode</td> |
| <td>One of <q>update</q> or <q>replace</q>.</td> |
| <td>No; default is <q>replace</q></td> |
| </tr> |
| <tr> |
| <td>encoding</td> |
| <td>The encoding used to read the existing manifest when updating. The task will always use |
| UTF-8 when writing the manifest.</td> |
| <td>No; defaults to UTF-8 encoding</td> |
| </tr> |
| <tr> |
| <td>mergeClassPathAttributes</td> |
| <td>Whether to merge the <code>Class-Path</code> attributes found in different manifests (if |
| updating). If <q>false</q>, only the attribute of the most recent manifest will be |
| preserved. <em>Since Ant 1.8.0</em>.<br/>Unless you also set <var>flattenAttributes</var> |
| to <q>true</q> this may result in manifests containing multiple <code>Class-Path</code> |
| attributes which violates the manifest specification.</td> |
| <td>No; default is <q>false</q></td> |
| </tr> |
| <tr> |
| <td>flattenAttributes</td> |
| <td>Whether to merge attributes occurring more than once in a section (this can only happen for |
| the <code>Class-Path</code> attribute) into a single attribute. <em>Since Ant |
| 1.8.0</em>.</td> |
| <td>No; default is <q>false</q></td> |
| </tr> |
| </table> |
| |
| <h3>Parameters specified as nested elements</h3> |
| <h4 id="attribute">attribute</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 class="attr"> |
| <tr> |
| <th scope="col">Attribute</th> |
| <th scope="col">Description</th> |
| <th scope="col">Required</th> |
| </tr> |
| <tr> |
| <td>name</td> |
| <td>the name of the attribute, must match the regexp <q>[A-Za-z0-9][A-Za-z0-9-_]*</q>. |
| </td> |
| <td>Yes</td> |
| </tr> |
| <tr> |
| <td>value</td> |
| <td>the value of the attribute.</td> |
| <td>Yes</td> |
| </tr> |
| </table> |
| |
| <h4>section</h4> |
| <p>A manifest section—you can nest <a href="#attribute">attribute</a> elements into |
| sections.</p> |
| |
| <table class="attr"> |
| <tr> |
| <th scope="col">Attribute</th> |
| <th scope="col">Description</th> |
| <th scope="col">Required</th> |
| </tr> |
| <tr> |
| <td>name</td> |
| <td>the name of the section.</td> |
| <td>No, defaults to the main section</td> |
| </tr> |
| </table> |
| |
| <h3>Examples</h3> |
| |
| <p>Create or replace the file <samp>MANIFEST.MF</samp>. Note that the <code>Built-By</code> |
| attribute will take the value of the Ant property <code>${user.name}</code>. The same is true for |
| the <code>${version}</code> and <code>${TODAY}</code> properties. This example produces |
| a <samp>MANIFEST.MF</samp> that |
| contains <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/versioning/spec/versioning2.html#wp90779" |
| target="_top">package version identification</a> for the package <samp>common</samp>.</p> |
| |
| <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>The manifest produced by the above would look like this:</p> |
| |
| <pre> |
| Manifest-Version: 1.0 |
| Built-By: bodewig |
| Created-By: Apache Ant 1.9 |
| |
| Name: common |
| Specification-Title: Example |
| Specification-Vendor: Example Organization |
| Implementation-Vendor: Example Corp. |
| Specification-Version: 1.2 |
| Implementation-Version: 1.2 September 10, 2013 |
| Implementation-Title: common |
| |
| Name: common/class1.class |
| Sealed: false</pre> |
| |
| </body> |
| </html> |