NAME

Jar::Manifest - Read and Write Java Jar Manifests

SYNOPSIS

use Jar::Manifest qw(Dump Load);

# Read a Manifest
my $manifest_str = <<"MANIFEST";
Manifest-Version: 1.0
Created-By: 1.5.0_11-b03 (Sun Microsystems Inc.)
Built-By: JAPH

Name: org/myapp/foo/
Implementation-Title: Test Java JAR
Implementation-Version: 1.9
Implementation-Vendor: JAPH

MANIFEST

my $manifest = Load($manifest_str);
printf( "Jar built by -> %s\n", $manifest->{main}->{'Built-By'} );
printf(
    "Name: %s\nVersion: %s\n",
    $_->{Name}, $_->{'Implementation-Version'}
    )
    for @{ $manifest->{entries} };

# Write a manifest
my $manifest = {

    # Main attributes
    main => {
        'Manifest-Version' => '1.0',
        'Created-By'       => '1.5.0_11-b03 (Sun Microsystems Inc.)',
        'Built-By'         => 'JAPH',
    },

    # Entries
    entries => [
        {
            'Name'                   => 'org/myapp/foo/',
            'Implementation-Title'   => 'Test Java JAR',
            'Implementation-Version' => '1.9',
            'Implementation-Vendor'  => 'JAPH',
        }
    ],
};
my $manifest_string = Dump($manifest);

DESCRIPTION

Jar::Manifest provides a perl interface to read and write Manifest files found within Java archives - typically META-INF/MANIFEST.MF within a .jar file.

The Jar Manifest specification can be found here http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#JAR_Manifest

METHODS

Load($string)
use Jar::Manifest qw(Load);
use Data::Dumper;

my $manifest = Load($string);
print Dumper $manifest;

Read the manifest contents in $string. Returns a hash-reference containing two keys. The main key is another hash-reference to the main attributes and corresponding values. The entries key is an array-ref of hashes containing per-entry attributes and the corresponding values

Dump($manifest)
print Dump($manifest);

Turns the $manifest data structure into a string that can be printed to a MANIFEST.MF file. The $manifest structure is expected to be in the same format as the Load() output.

DEPENDENCIES

Encode

Text::Wrap

BUGS AND LIMITATIONS

Please report any bugs or feature requests to bug-jar-manifest@rt.cpan.org, or through the web interface at http://rt.cpan.org/Public/Dist/Display.html?Name=Jar-Manifest

AUTHOR

Mithun Ayachit mithun@cpan.org

LICENSE AND COPYRIGHT

Copyright (c) 2012, Mithun Ayachit. All rights reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic.