org.apache.tools.ant.taskdefs

## Class Manifest

- java.lang.Object
- - org.apache.tools.ant.taskdefs.Manifest

-     public class Manifest
      extends java.lang.Object

  Holds the data of a jar manifest. Manifests are processed according to the Jar file specification.. 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. If an application can not handle the continuation mechanism, it is a defect in the application, not this task.
  Since:
    Ant 1.4

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `Manifest.Attribute` An attribute for the manifest.
    `static class` | `Manifest.Section` A manifest section - you can nest attribute elements into sections.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `ATTRIBUTE_CLASSPATH` The Class-Path Header is special - it can be duplicated
    `static java.lang.String` | `ATTRIBUTE_FROM` The From Header is disallowed in a Manifest
    `static java.lang.String` | `ATTRIBUTE_MANIFEST_VERSION` The standard manifest version header
    `static java.lang.String` | `ATTRIBUTE_NAME` The Name Attribute is the first in a named section
    `static java.lang.String` | `ATTRIBUTE_SIGNATURE_VERSION` The standard Signature Version header
    `static java.lang.String` | `DEFAULT_MANIFEST_VERSION` Default Manifest version if one is not specified
    `static java.lang.String` | `EOL` The End-Of-Line marker in manifests
    `static java.lang.String` | `ERROR_FROM_FORBIDDEN` Error for attributes
    `static java.lang.String` | `JAR_ENCODING` Encoding to be used for JAR files.
    `static int` | `MAX_LINE_LENGTH` The max length of a line in a Manifest
    `static int` | `MAX_SECTION_LENGTH` Max length of a line section which is continued.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Manifest()` Construct an empty manifest
    `Manifest(java.io.Reader r)` Read a manifest file from the given reader

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addConfiguredAttribute(Manifest.Attribute attribute)` Add an attribute to the manifest - it is added to the main section.
    `void` | `addConfiguredSection(Manifest.Section section)` Add a section to the manifest
    `boolean` | `equals(java.lang.Object rhs)`
    `static Manifest` | `getDefaultManifest()` Construct a manifest from Ant's default manifest file.
    `Manifest.Section` | `getMainSection()` Get the main section of the manifest
    `java.lang.String` | `getManifestVersion()` Get the version of the manifest
    `Manifest.Section` | `getSection(java.lang.String name)` Get a particular section from the manifest
    `java.util.Enumeration` | `getSectionNames()` Get the section names in this manifest.
    `java.util.Enumeration` | `getWarnings()` Get the warnings for this manifest.
    `int` | `hashCode()`
    `void` | `merge(Manifest other)` Merge the contents of the given manifest into this manifest without merging Class-Path attributes.
    `void` | `merge(Manifest other, boolean overwriteMain)` Merge the contents of the given manifest into this manifest without merging Class-Path attributes.
    `void` | `merge(Manifest other, boolean overwriteMain, boolean mergeClassPaths)` Merge the contents of the given manifest into this manifest
    `java.lang.String` | `toString()` Convert the manifest to its string representation
    `void` | `write(java.io.PrintWriter writer)` Write the manifest out to a print writer without flattening multi-values attributes (i.e.
    `void` | `write(java.io.PrintWriter writer, boolean flatten)` Write the manifest out to a print writer.

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### ATTRIBUTE_MANIFEST_VERSION

          public static final java.lang.String ATTRIBUTE_MANIFEST_VERSION

      The standard manifest version header
      See Also:
        Constant Field Values

    - #### ATTRIBUTE_SIGNATURE_VERSION

          public static final java.lang.String ATTRIBUTE_SIGNATURE_VERSION

      The standard Signature Version header
      See Also:
        Constant Field Values

    - #### ATTRIBUTE_NAME

          public static final java.lang.String ATTRIBUTE_NAME

      The Name Attribute is the first in a named section
      See Also:
        Constant Field Values

    - #### ATTRIBUTE_FROM

          public static final java.lang.String ATTRIBUTE_FROM

      The From Header is disallowed in a Manifest
      See Also:
        Constant Field Values

    - #### ATTRIBUTE_CLASSPATH

          public static final java.lang.String ATTRIBUTE_CLASSPATH

      The Class-Path Header is special - it can be duplicated
      See Also:
        Constant Field Values

    - #### DEFAULT_MANIFEST_VERSION

          public static final java.lang.String DEFAULT_MANIFEST_VERSION

      Default Manifest version if one is not specified
      See Also:
        Constant Field Values

    - #### MAX_LINE_LENGTH

          public static final int MAX_LINE_LENGTH

      The max length of a line in a Manifest
      See Also:
        Constant Field Values

    - #### MAX_SECTION_LENGTH

          public static final int MAX_SECTION_LENGTH

      Max length of a line section which is continued. Need to allow for the CRLF.
      See Also:
        Constant Field Values

    - #### EOL

          public static final java.lang.String EOL

      The End-Of-Line marker in manifests
      See Also:
        Constant Field Values

    - #### ERROR_FROM_FORBIDDEN

          public static final java.lang.String ERROR_FROM_FORBIDDEN

      Error for attributes
      See Also:
        Constant Field Values

    - #### JAR_ENCODING

          public static final java.lang.String JAR_ENCODING

      Encoding to be used for JAR files.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Manifest

          public Manifest()

      Construct an empty manifest

    - #### Manifest

          public Manifest(java.io.Reader r)
                   throws ManifestException,
                          java.io.IOException

      Read a manifest file from the given reader
      Parameters:
        `r` - is the reader from which the Manifest is read
      Throws:
        `ManifestException` - if the manifest is not valid according to the JAR spec
        `java.io.IOException` - if the manifest cannot be read from the reader.

  - ### Method Detail

    - #### getDefaultManifest

          public static Manifest getDefaultManifest()
                                             throws BuildException

      Construct a manifest from Ant's default manifest file.
      Returns:
        the default manifest.
      Throws:
        `BuildException` - if there is a problem loading the default manifest

    - #### addConfiguredSection

          public void addConfiguredSection(Manifest.Section section)
                                    throws ManifestException

      Add a section to the manifest
      Parameters:
        `section` - the manifest section to be added
      Throws:
        `ManifestException` - if the secti0on is not valid.

    - #### addConfiguredAttribute

          public void addConfiguredAttribute(Manifest.Attribute attribute)
                                      throws ManifestException

      Add an attribute to the manifest - it is added to the main section.
      Parameters:
        `attribute` - the attribute to be added.
      Throws:
        `ManifestException` - if the attribute is not valid.

    - #### merge

          public void merge(Manifest other)
                     throws ManifestException

      Merge the contents of the given manifest into this manifest without merging Class-Path attributes.
      Parameters:
        `other` - the Manifest to be merged with this one.
      Throws:
        `ManifestException` - if there is a problem merging the manifest according to the Manifest spec.

    - #### merge

          public void merge(Manifest other,
                   boolean overwriteMain)
                     throws ManifestException

      Merge the contents of the given manifest into this manifest without merging Class-Path attributes.
      Parameters:
        `other` - the Manifest to be merged with this one.
        `overwriteMain` - whether to overwrite the main section of the current manifest
      Throws:
        `ManifestException` - if there is a problem merging the manifest according to the Manifest spec.

    - #### merge

          public void merge(Manifest other,
                   boolean overwriteMain,
                   boolean mergeClassPaths)
                     throws ManifestException

      Merge the contents of the given manifest into this manifest
      Parameters:
        `other` - the Manifest to be merged with this one.
        `overwriteMain` - whether to overwrite the main section of the current manifest
        `mergeClassPaths` - whether Class-Path attributes should be merged.
      Throws:
        `ManifestException` - if there is a problem merging the manifest according to the Manifest spec.
      Since:
        Ant 1.8.0

    - #### write

          public void write(java.io.PrintWriter writer)
                     throws java.io.IOException

      Write the manifest out to a print writer without flattening multi-values attributes (i.e. Class-Path).
      Parameters:
        `writer` - the Writer to which the manifest is written
      Throws:
        `java.io.IOException` - if the manifest cannot be written

    - #### write

          public void write(java.io.PrintWriter writer,
                   boolean flatten)
                     throws java.io.IOException

      Write the manifest out to a print writer.
      Parameters:
        `writer` - the Writer to which the manifest is written
        `flatten` - whether to collapse multi-valued attributes (i.e. potentially Class-Path) Class-Path into a single attribute.
      Throws:
        `java.io.IOException` - if the manifest cannot be written
      Since:
        Ant 1.8.0

    - #### toString

          public java.lang.String toString()

      Convert the manifest to its string representation
      Overrides:
        `toString` in class `java.lang.Object`
      Returns:
        a multiline string with the Manifest as it appears in a Manifest file.

    - #### getWarnings

          public java.util.Enumeration getWarnings()

      Get the warnings for this manifest.
      Returns:
        an enumeration of warning strings

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`
      Returns:
        a hashcode based on the version, main and sections.
      See Also:
        `Object.hashCode()`

    - #### equals

          public boolean equals(java.lang.Object rhs)

      Overrides:
        `equals` in class `java.lang.Object`
      Parameters:
        `rhs` - the object to check for equality.
      Returns:
        true if the version, main and sections are the same.
      See Also:
        `Object.equals(java.lang.Object)`

    - #### getManifestVersion

          public java.lang.String getManifestVersion()

      Get the version of the manifest
      Returns:
        the manifest's version string

    - #### getMainSection

          public Manifest.Section getMainSection()

      Get the main section of the manifest
      Returns:
        the main section of the manifest

    - #### getSection

          public Manifest.Section getSection(java.lang.String name)

      Get a particular section from the manifest
      Parameters:
        `name` - the name of the section desired.
      Returns:
        the specified section or null if that section does not exist in the manifest

    - #### getSectionNames

          public java.util.Enumeration getSectionNames()

      Get the section names in this manifest.
      Returns:
        an Enumeration of section names