如何使用Bash从JAR读取MANIFEST.MF文件
我需要使用bash从“some.jar”读取MANIFEST.MF maven manifest文件
$ unzip -q -c myarchive.jar META-INF/MANIFEST.MF
-
-q
会压缩unzip程序的详细输出 -
-c
将提取到标准输出
例:
$ 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
或者,您可以使用-p
而不是-q -c
。
-p提取文件到pipe道(stdout)。 只有文件数据发送到标准输出,并且文件始终以二进制格式提取,就像存储(不进行转换)一样。
使用unzip
:
$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF
( -q
)从jarfile(使用zip格式压缩)读取META-INF / MANIFEST.MF到stdout( -c
)。 然后,您可以将输出传递给其他命令来回答问题,例如“这个jar的主要类是什么:
$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF | grep 'Main-Class' | cut -d ':' -f 2
(这将删除所有不包含stringMain-Class
的行,然后拆分行,仅保留第二个字段,类名)。 当然,要么适当地定义$JARFILE_PATH
,要么将$JARFILE_PATH
replace$JARFILE_PATH
您感兴趣的$JARFILE_PATH
的path。
根据您的发行版,安装unzip
软件包。 然后简单地问题
unzip -p YOUR_FILE.jar META-INF/MANIFEST.MF
这会将内容转储到STDOUT。
HTH
其他人一直在张贴使用unzip -p和pipe道grep或awk或任何你需要的。 虽然这在大多数情况下都适用,但值得注意的是,由于MANIFEST.MF每行72个字符的限制,您可能会对其值在多行上分割的键进行精选,因此将很难进行parsing。 我很想看到一个CLI工具,它实际上可以从文件中提取一个渲染值。
http://delaltctrl.blogspot.com/2009/11/manifestmf-apparently-you-are-just.html
$ tar xfO some.jar META-INF/MANIFEST.MF
x
提取和O
redirect到stdout。
注意:似乎只能在bsdtar而不是GNU tar中工作。