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 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 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.nio.charset.Charset JAR_CHARSET
    Charset to be used for JAR files.
    static java.lang.String JAR_ENCODING
    Deprecated.
    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 Description
    Manifest()
    Construct an empty manifest
    Manifest​(java.io.Reader r)
    Read a manifest file from the given reader
  • Method Summary

    Modifier and Type Method 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<java.lang.String> getSectionNames()
    Get the section names in this manifest.
    java.util.Enumeration<java.lang.String> 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 Details

  • Constructor Details

    • 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 Details

    • 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<java.lang.String> 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<java.lang.String> getSectionNames()
      Get the section names in this manifest.
      Returns:
      an Enumeration of section names