How to read MANIFEST.MF file from JAR using Bash
Depending on your distribution, install the unzip
package. Then simply issue
unzip -p YOUR_FILE.jar META-INF/MANIFEST.MF
This will dump the contents to STDOUT.
HTH
$ tar xfO some.jar META-INF/MANIFEST.MF
x
extracts and O
redirects to stdout.
Note: Seem to work only in bsdtar, not GNU tar.
use unzip
:
$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF
that will quietly (-q
) read the path META-INF/MANIFEST.MF from the jarfile (which is compressed using the zip format) to stdout (-c
). You can then pipe the output to other command to answer questions like 'what is the main class for this jar:
$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF | grep 'Main-Class' | cut -d ':' -f 2
(this removes all lines which don't contain the string Main-Class
, then splits the line at :
, keeping only the second field, the class name). Of course, either define $JARFILE_PATH
appropriately or replace $JARFILE_PATH
with the path to a jarfile you're interested in.
$ unzip -q -c myarchive.jar META-INF/MANIFEST.MF
-q
will suppress verbose output from the unzip program-c
will extract to stdout
Example:
$ unzip -q -c commons-lang-2.4.jar META-INF/MANIFEST.MF
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 1.5.0_13-119 (Apple Inc.)
Package: org.apache.commons.lang
Extension-Name: commons-lang
Specification-Version: 2.4
Specification-Vendor: Apache Software Foundation
Specification-Title: Commons Lang
Implementation-Version: 2.4
Implementation-Vendor: Apache Software Foundation
Implementation-Title: Commons Lang
Implementation-Vendor-Id: org.apache
X-Compile-Source-JDK: 1.3
X-Compile-Target-JDK: 1.2
Alternatively you can use -p
instead of -q -c
.
-p extract files to pipe (stdout). Nothing but the file data is sent to stdout, and the files are always extracted in binary format, just as they are stored (no conversions).